/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_depthwise_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/depthwise_conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using FilterBackpropWindow5Stride2 =
    sycldnn::depthwise_conv2d::WindowStrideTest<Pair, 5, 2>;
TYPED_TEST_SUITE(FilterBackpropWindow5Stride2, GTestTypePairs);
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2031., 2130., 2746., 1968., 2058., 2724., 2823., 3628., 2598.,
      2688., 3448., 3556., 4560., 3256., 3352., 1860., 1923., 2428.,
      1698., 1752., 2301., 2364., 2974., 2076., 2130.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      120., 130., 140., 150., 160., 190., 200., 210., 220.,
      230., 260., 270., 280., 290., 300., 330., 340., 350.,
      360., 370., 400., 410., 420., 430., 440.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3909., 4062., 4098., 4260., 5276., 5492., 3774., 3936., 3945., 4116.,
      5232., 5448., 5421., 5646., 6956., 7256., 4971., 5196., 5142., 5376.,
      6608., 6896., 6812., 7112., 8720., 9120., 6212., 6512., 6392., 6704.,
      3504., 3720., 3621., 3846., 4556., 4856., 3171., 3396., 3270., 3504.,
      4323., 4602., 4440., 4728., 5564., 5948., 3864., 4152., 3963., 4260.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      204., 240., 220., 260., 236., 280., 252., 300., 268., 320.,
      316., 380., 332., 400., 348., 420., 364., 440., 380., 460.,
      428., 520., 444., 540., 460., 560., 476., 580., 492., 600.,
      540., 660., 556., 680., 572., 700., 588., 720., 604., 740.,
      652., 800., 668., 820., 684., 840., 700., 860., 716., 880.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7665.,  7818.,  7971.,  8124.,  8034.,  8196.,  8358.,  8520.,  10336.,
      10552., 10768., 10984., 7386.,  7548.,  7710.,  7872.,  7719.,  7890.,
      8061.,  8232.,  10248., 10464., 10680., 10896., 10617., 10842., 11067.,
      11292., 13612., 13912., 14212., 14512., 9717.,  9942.,  10167., 10392.,
      10050., 10284., 10518., 10752., 12928., 13216., 13504., 13792., 13324.,
      13624., 13924., 14224., 17040., 17440., 17840., 18240., 12124., 12424.,
      12724., 13024., 12472., 12784., 13096., 13408., 6792.,  7008.,  7224.,
      7440.,  7017.,  7242.,  7467.,  7692.,  8812.,  9112.,  9412.,  9712.,
      6117.,  6342.,  6567.,  6792.,  6306.,  6540.,  6774.,  7008.,  8367.,
      8646.,  8925.,  9204.,  8592.,  8880.,  9168.,  9456.,  10744., 11128.,
      11512., 11896., 7440.,  7728.,  8016.,  8304.,  7629.,  7926.,  8223.,
      8520.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      372.,  408.,  444.,  480.,  400.,  440.,  480.,  520.,  428.,  472.,
      516.,  560.,  456.,  504.,  552.,  600.,  484.,  536.,  588.,  640.,
      568.,  632.,  696.,  760.,  596.,  664.,  732.,  800.,  624.,  696.,
      768.,  840.,  652.,  728.,  804.,  880.,  680.,  760.,  840.,  920.,
      764.,  856.,  948.,  1040., 792.,  888.,  984.,  1080., 820.,  920.,
      1020., 1120., 848.,  952.,  1056., 1160., 876.,  984.,  1092., 1200.,
      960.,  1080., 1200., 1320., 988.,  1112., 1236., 1360., 1016., 1144.,
      1272., 1400., 1044., 1176., 1308., 1440., 1072., 1208., 1344., 1480.,
      1156., 1304., 1452., 1600., 1184., 1336., 1488., 1640., 1212., 1368.,
      1524., 1680., 1240., 1400., 1560., 1720., 1268., 1432., 1596., 1760.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7629.,  8124.,  8007.,  8520.,  10312., 10984., 7377.,  7872.,  7719.,
      8232.,  10275., 10896., 10653., 11292., 13672., 14512., 9771.,  10392.,
      10113., 10752., 13012., 13792., 13420., 14224., 17184., 18240., 12244.,
      13024., 12604., 13408., 6891.,  7440.,  7125.,  7692.,  8968.,  9712.,
      6243.,  6792.,  6441.,  7008.,  8529.,  9204.,  8763.,  9456.,  10984.,
      11896., 7629.,  8304.,  7827.,  8520.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      392.,  480.,  424.,  520.,  456.,  560.,  488.,  600.,  520.,  640.,
      616.,  760.,  648.,  800.,  680.,  840.,  712.,  880.,  744.,  920.,
      840.,  1040., 872.,  1080., 904.,  1120., 936.,  1160., 968.,  1200.,
      1064., 1320., 1096., 1360., 1128., 1400., 1160., 1440., 1192., 1480.,
      1288., 1600., 1320., 1640., 1352., 1680., 1384., 1720., 1416., 1760.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14961., 15258., 15942., 16248., 15699., 16014., 16716., 17040., 20204.,
      20624., 21536., 21968., 14439., 14754., 15420., 15744., 15105., 15438.,
      16122., 16464., 20127., 20550., 21360., 21792., 20865., 21306., 22134.,
      22584., 26756., 27344., 28424., 29024., 19101., 19542., 20334., 20784.,
      19767., 20226., 21036., 21504., 25460., 26024., 27008., 27584., 26252.,
      26840., 27848., 28448., 33584., 34368., 35680., 36480., 23900., 24488.,
      25448., 26048., 24596., 25208., 26192., 26816., 13359., 13782., 14448.,
      14880., 13809., 14250., 14934., 15384., 17348., 17936., 18824., 19424.,
      12045., 12486., 13134., 13584., 12423., 12882., 13548., 14016., 16509.,
      17058., 17850., 18408., 16959., 17526., 18336., 18912., 21212., 21968.,
      23024., 23792., 14691., 15258., 16032., 16608., 15069., 15654., 16446.,
      17040.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      716.,  784.,  888.,  960.,  772.,  848.,  960.,  1040., 828.,  912.,
      1032., 1120., 884.,  976.,  1104., 1200., 940.,  1040., 1176., 1280.,
      1108., 1232., 1392., 1520., 1164., 1296., 1464., 1600., 1220., 1360.,
      1536., 1680., 1276., 1424., 1608., 1760., 1332., 1488., 1680., 1840.,
      1500., 1680., 1896., 2080., 1556., 1744., 1968., 2160., 1612., 1808.,
      2040., 2240., 1668., 1872., 2112., 2320., 1724., 1936., 2184., 2400.,
      1892., 2128., 2400., 2640., 1948., 2192., 2472., 2720., 2004., 2256.,
      2544., 2800., 2060., 2320., 2616., 2880., 2116., 2384., 2688., 2960.,
      2284., 2576., 2904., 3200., 2340., 2640., 2976., 3280., 2396., 2704.,
      3048., 3360., 2452., 2768., 3120., 3440., 2508., 2832., 3192., 3520.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29625., 29922., 30219., 30516., 31578., 31884., 32190., 32496., 31083.,
      31398., 31713., 32028., 33108., 33432., 33756., 34080., 39988., 40408.,
      40828., 41248., 42640., 43072., 43504., 43936., 28563., 28878., 29193.,
      29508., 30516., 30840., 31164., 31488., 29877., 30210., 30543., 30876.,
      31902., 32244., 32586., 32928., 39831., 40254., 40677., 41100., 42288.,
      42720., 43152., 43584., 41289., 41730., 42171., 42612., 43818., 44268.,
      44718., 45168., 52924., 53512., 54100., 54688., 56248., 56848., 57448.,
      58048., 37761., 38202., 38643., 39084., 40218., 40668., 41118., 41568.,
      39075., 39534., 39993., 40452., 41604., 42072., 42540., 43008., 50356.,
      50920., 51484., 52048., 53440., 54016., 54592., 55168., 51916., 52504.,
      53092., 53680., 55096., 55696., 56296., 56896., 66384., 67168., 67952.,
      68736., 70560., 71360., 72160., 72960., 47212., 47800., 48388., 48976.,
      50296., 50896., 51496., 52096., 48580., 49192., 49804., 50416., 51760.,
      52384., 53008., 53632., 26295., 26718., 27141., 27564., 28464., 28896.,
      29328., 29760., 27177., 27618., 28059., 28500., 29418., 29868., 30318.,
      30768., 34108., 34696., 35284., 35872., 37048., 37648., 38248., 38848.,
      23649., 24090., 24531., 24972., 25818., 26268., 26718., 27168., 24387.,
      24846., 25305., 25764., 26628., 27096., 27564., 28032., 32469., 33018.,
      33567., 34116., 35142., 35700., 36258., 36816., 33351., 33918., 34485.,
      35052., 36096., 36672., 37248., 37824., 41668., 42424., 43180., 43936.,
      45280., 46048., 46816., 47584., 28815., 29382., 29949., 30516., 31488.,
      32064., 32640., 33216., 29553., 30138., 30723., 31308., 32298., 32892.,
      33486., 34080.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1364., 1432., 1500., 1568., 1704., 1776., 1848., 1920., 1468., 1544.,
      1620., 1696., 1840., 1920., 2000., 2080., 1572., 1656., 1740., 1824.,
      1976., 2064., 2152., 2240., 1676., 1768., 1860., 1952., 2112., 2208.,
      2304., 2400., 1780., 1880., 1980., 2080., 2248., 2352., 2456., 2560.,
      2092., 2216., 2340., 2464., 2656., 2784., 2912., 3040., 2196., 2328.,
      2460., 2592., 2792., 2928., 3064., 3200., 2300., 2440., 2580., 2720.,
      2928., 3072., 3216., 3360., 2404., 2552., 2700., 2848., 3064., 3216.,
      3368., 3520., 2508., 2664., 2820., 2976., 3200., 3360., 3520., 3680.,
      2820., 3000., 3180., 3360., 3608., 3792., 3976., 4160., 2924., 3112.,
      3300., 3488., 3744., 3936., 4128., 4320., 3028., 3224., 3420., 3616.,
      3880., 4080., 4280., 4480., 3132., 3336., 3540., 3744., 4016., 4224.,
      4432., 4640., 3236., 3448., 3660., 3872., 4152., 4368., 4584., 4800.,
      3548., 3784., 4020., 4256., 4560., 4800., 5040., 5280., 3652., 3896.,
      4140., 4384., 4696., 4944., 5192., 5440., 3756., 4008., 4260., 4512.,
      4832., 5088., 5344., 5600., 3860., 4120., 4380., 4640., 4968., 5232.,
      5496., 5760., 3964., 4232., 4500., 4768., 5104., 5376., 5648., 5920.,
      4276., 4568., 4860., 5152., 5512., 5808., 6104., 6400., 4380., 4680.,
      4980., 5280., 5648., 5952., 6256., 6560., 4484., 4792., 5100., 5408.,
      5784., 6096., 6408., 6720., 4588., 4904., 5220., 5536., 5920., 6240.,
      6560., 6880., 4692., 5016., 5340., 5664., 6056., 6384., 6712., 7040.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29553., 30516., 31497., 32496., 31029., 32028., 33045., 34080., 39940.,
      41248., 42580., 43936., 28545., 29508., 30489., 31488., 29877., 30876.,
      31893., 32928., 39885., 41100., 42333., 43584., 41361., 42612., 43881.,
      45168., 53044., 54688., 56356., 58048., 37869., 39084., 40317., 41568.,
      39201., 40452., 41721., 43008., 50524., 52048., 53596., 55168., 52108.,
      53680., 55276., 56896., 66672., 68736., 70832., 72960., 47452., 48976.,
      50524., 52096., 48844., 50416., 52012., 53632., 26493., 27564., 28653.,
      29760., 27393., 28500., 29625., 30768., 34420., 35872., 37348., 38848.,
      23901., 24972., 26061., 27168., 24657., 25764., 26889., 28032., 32793.,
      34116., 35457., 36816., 33693., 35052., 36429., 37824., 42148., 43936.,
      45748., 47584., 29193., 30516., 31857., 33216., 29949., 31308., 32685.,
      34080.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1404., 1568., 1740., 1920., 1516., 1696., 1884., 2080., 1628., 1824.,
      2028., 2240., 1740., 1952., 2172., 2400., 1852., 2080., 2316., 2560.,
      2188., 2464., 2748., 3040., 2300., 2592., 2892., 3200., 2412., 2720.,
      3036., 3360., 2524., 2848., 3180., 3520., 2636., 2976., 3324., 3680.,
      2972., 3360., 3756., 4160., 3084., 3488., 3900., 4320., 3196., 3616.,
      4044., 4480., 3308., 3744., 4188., 4640., 3420., 3872., 4332., 4800.,
      3756., 4256., 4764., 5280., 3868., 4384., 4908., 5440., 3980., 4512.,
      5052., 5600., 4092., 4640., 5196., 5760., 4204., 4768., 5340., 5920.,
      4540., 5152., 5772., 6400., 4652., 5280., 5916., 6560., 4764., 5408.,
      6060., 6720., 4876., 5536., 6204., 6880., 4988., 5664., 6348., 7040.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      58521.,  59106.,  60438.,  61032.,  62391.,  62994.,  64380.,  64992.,
      61437.,  62058.,  63426.,  64056.,  65451.,  66090.,  67512.,  68160.,
      79052.,  79880.,  81656.,  82496.,  84308.,  85160.,  87008.,  87872.,
      56469.,  57090.,  58386.,  59016.,  60339.,  60978.,  62328.,  62976.,
      59097.,  59754.,  61086.,  61752.,  63111.,  63786.,  65172.,  65856.,
      78933.,  79770.,  81354.,  82200.,  83811.,  84666.,  86304.,  87168.,
      81849.,  82722.,  84342.,  85224.,  86871.,  87762.,  89436.,  90336.,
      104924., 106088., 108200., 109376., 111524., 112712., 114896., 116096.,
      74865.,  75738.,  77286.,  78168.,  79743.,  80634.,  82236.,  83136.,
      77493.,  78402.,  79986.,  80904.,  82515.,  83442.,  85080.,  86016.,
      99932.,  101048., 102968., 104096., 106052., 107192., 109184., 110336.,
      103052., 104216., 106184., 107360., 109364., 110552., 112592., 113792.,
      131792., 133344., 135904., 137472., 140080., 141664., 144320., 145920.,
      93740.,  94904.,  96776.,  97952.,  99860.,  101048., 102992., 104192.,
      96476.,  97688.,  99608.,  100832., 102788., 104024., 106016., 107264.,
      52149.,  52986.,  54282.,  55128.,  56451.,  57306.,  58656.,  59520.,
      53913.,  54786.,  56118.,  57000.,  58359.,  59250.,  60636.,  61536.,
      67676.,  68840.,  70568.,  71744.,  73508.,  74696.,  76496.,  77696.,
      46929.,  47802.,  49062.,  49944.,  51231.,  52122.,  53436.,  54336.,
      48405.,  49314.,  50610.,  51528.,  52851.,  53778.,  55128.,  56064.,
      64497.,  65586.,  67134.,  68232.,  69807.,  70914.,  72516.,  73632.,
      66261.,  67386.,  68970.,  70104.,  71715.,  72858.,  74496.,  75648.,
      82796.,  84296.,  86360.,  87872.,  89972.,  91496.,  93632.,  95168.,
      57261.,  58386.,  59898.,  61032.,  62571.,  63714.,  65280.,  66432.,
      58737.,  59898.,  61446.,  62616.,  64191.,  65370.,  66972.,  68160.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2676.,  2808.,  3000.,  3136.,  3340.,  3480.,  3696.,  3840.,  2884.,
      3032.,  3240.,  3392.,  3612.,  3768.,  4000.,  4160.,  3092.,  3256.,
      3480.,  3648.,  3884.,  4056.,  4304.,  4480.,  3300.,  3480.,  3720.,
      3904.,  4156.,  4344.,  4608.,  4800.,  3508.,  3704.,  3960.,  4160.,
      4428.,  4632.,  4912.,  5120.,  4132.,  4376.,  4680.,  4928.,  5244.,
      5496.,  5824.,  6080.,  4340.,  4600.,  4920.,  5184.,  5516.,  5784.,
      6128.,  6400.,  4548.,  4824.,  5160.,  5440.,  5788.,  6072.,  6432.,
      6720.,  4756.,  5048.,  5400.,  5696.,  6060.,  6360.,  6736.,  7040.,
      4964.,  5272.,  5640.,  5952.,  6332.,  6648.,  7040.,  7360.,  5588.,
      5944.,  6360.,  6720.,  7148.,  7512.,  7952.,  8320.,  5796.,  6168.,
      6600.,  6976.,  7420.,  7800.,  8256.,  8640.,  6004.,  6392.,  6840.,
      7232.,  7692.,  8088.,  8560.,  8960.,  6212.,  6616.,  7080.,  7488.,
      7964.,  8376.,  8864.,  9280.,  6420.,  6840.,  7320.,  7744.,  8236.,
      8664.,  9168.,  9600.,  7044.,  7512.,  8040.,  8512.,  9052.,  9528.,
      10080., 10560., 7252.,  7736.,  8280.,  8768.,  9324.,  9816.,  10384.,
      10880., 7460.,  7960.,  8520.,  9024.,  9596.,  10104., 10688., 11200.,
      7668.,  8184.,  8760.,  9280.,  9868.,  10392., 10992., 11520., 7876.,
      8408.,  9000.,  9536.,  10140., 10680., 11296., 11840., 8500.,  9080.,
      9720.,  10304., 10956., 11544., 12208., 12800., 8708.,  9304.,  9960.,
      10560., 11228., 11832., 12512., 13120., 8916.,  9528.,  10200., 10816.,
      11500., 12120., 12816., 13440., 9124.,  9752.,  10440., 11072., 11772.,
      12408., 13120., 13760., 9332.,  9976.,  10680., 11328., 12044., 12696.,
      13424., 14080.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      116457., 117042., 117627., 118212., 120282., 120876., 121470., 122064.,
      124179., 124782., 125385., 125988., 128148., 128760., 129372., 129984.,
      122253., 122874., 123495., 124116., 126222., 126852., 127482., 128112.,
      130263., 130902., 131541., 132180., 134376., 135024., 135672., 136320.,
      157276., 158104., 158932., 159760., 162472., 163312., 164152., 164992.,
      167764., 168616., 169468., 170320., 173152., 174016., 174880., 175744.,
      112317., 112938., 113559., 114180., 116142., 116772., 117402., 118032.,
      120039., 120678., 121317., 121956., 124008., 124656., 125304., 125952.,
      117537., 118194., 118851., 119508., 121506., 122172., 122838., 123504.,
      125547., 126222., 126897., 127572., 129660., 130344., 131028., 131712.,
      157029., 157866., 158703., 159540., 161862., 162708., 163554., 164400.,
      166767., 167622., 168477., 169332., 171744., 172608., 173472., 174336.,
      162825., 163698., 164571., 165444., 167802., 168684., 169566., 170448.,
      172851., 173742., 174633., 175524., 177972., 178872., 179772., 180672.,
      208684., 209848., 211012., 212176., 215224., 216400., 217576., 218752.,
      221860., 223048., 224236., 225424., 228592., 229792., 230992., 232192.,
      148857., 149730., 150603., 151476., 153690., 154572., 155454., 156336.,
      158595., 159486., 160377., 161268., 163572., 164472., 165372., 166272.,
      154077., 154986., 155895., 156804., 159054., 159972., 160890., 161808.,
      164103., 165030., 165957., 166884., 169224., 170160., 171096., 172032.,
      198748., 199864., 200980., 202096., 204808., 205936., 207064., 208192.,
      210964., 212104., 213244., 214384., 217216., 218368., 219520., 220672.,
      204940., 206104., 207268., 208432., 211192., 212368., 213544., 214720.,
      217540., 218728., 219916., 221104., 223984., 225184., 226384., 227584.,
      262032., 263584., 265136., 266688., 270240., 271808., 273376., 274944.,
      278576., 280160., 281744., 283328., 287040., 288640., 290240., 291840.,
      186316., 187480., 188644., 189808., 192376., 193552., 194728., 195904.,
      198532., 199720., 200908., 202096., 204784., 205984., 207184., 208384.,
      191740., 192952., 194164., 195376., 197992., 199216., 200440., 201664.,
      204340., 205576., 206812., 208048., 210784., 212032., 213280., 214528.,
      103461., 104298., 105135., 105972., 107718., 108564., 109410., 110256.,
      112047., 112902., 113757., 114612., 116448., 117312., 118176., 119040.,
      106953., 107826., 108699., 109572., 111354., 112236., 113118., 114000.,
      115827., 116718., 117609., 118500., 120372., 121272., 122172., 123072.,
      134188., 135352., 136516., 137680., 139960., 141136., 142312., 143488.,
      145828., 147016., 148204., 149392., 151792., 152992., 154192., 155392.,
      92985.,  93858.,  94731.,  95604.,  97242.,  98124.,  99006.,  99888.,
      101571., 102462., 103353., 104244., 105972., 106872., 107772., 108672.,
      95901.,  96810.,  97719.,  98628.,  100302., 101220., 102138., 103056.,
      104775., 105702., 106629., 107556., 109320., 110256., 111192., 112128.,
      127905., 128994., 130083., 131172., 133170., 134268., 135366., 136464.,
      138507., 139614., 140721., 141828., 143916., 145032., 146148., 147264.,
      131397., 132522., 133647., 134772., 136806., 137940., 139074., 140208.,
      142287., 143430., 144573., 145716., 147840., 148992., 150144., 151296.,
      164092., 165592., 167092., 168592., 171208., 172720., 174232., 175744.,
      178420., 179944., 181468., 182992., 185728., 187264., 188800., 190336.,
      113397., 114522., 115647., 116772., 118662., 119796., 120930., 122064.,
      123999., 125142., 126285., 127428., 129408., 130560., 131712., 132864.,
      116313., 117474., 118635., 119796., 121722., 122892., 124062., 125232.,
      127203., 128382., 129561., 130740., 132756., 133944., 135132., 136320.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5220.,  5352.,  5484.,  5616.,  5864.,  6000.,  6136.,  6272.,  6540.,
      6680.,  6820.,  6960.,  7248.,  7392.,  7536.,  7680.,  5620.,  5768.,
      5916.,  6064.,  6328.,  6480.,  6632.,  6784.,  7068.,  7224.,  7380.,
      7536.,  7840.,  8000.,  8160.,  8320.,  6020.,  6184.,  6348.,  6512.,
      6792.,  6960.,  7128.,  7296.,  7596.,  7768.,  7940.,  8112.,  8432.,
      8608.,  8784.,  8960.,  6420.,  6600.,  6780.,  6960.,  7256.,  7440.,
      7624.,  7808.,  8124.,  8312.,  8500.,  8688.,  9024.,  9216.,  9408.,
      9600.,  6820.,  7016.,  7212.,  7408.,  7720.,  7920.,  8120.,  8320.,
      8652.,  8856.,  9060.,  9264.,  9616.,  9824.,  10032., 10240., 8020.,
      8264.,  8508.,  8752.,  9112.,  9360.,  9608.,  9856.,  10236., 10488.,
      10740., 10992., 11392., 11648., 11904., 12160., 8420.,  8680.,  8940.,
      9200.,  9576.,  9840.,  10104., 10368., 10764., 11032., 11300., 11568.,
      11984., 12256., 12528., 12800., 8820.,  9096.,  9372.,  9648.,  10040.,
      10320., 10600., 10880., 11292., 11576., 11860., 12144., 12576., 12864.,
      13152., 13440., 9220.,  9512.,  9804.,  10096., 10504., 10800., 11096.,
      11392., 11820., 12120., 12420., 12720., 13168., 13472., 13776., 14080.,
      9620.,  9928.,  10236., 10544., 10968., 11280., 11592., 11904., 12348.,
      12664., 12980., 13296., 13760., 14080., 14400., 14720., 10820., 11176.,
      11532., 11888., 12360., 12720., 13080., 13440., 13932., 14296., 14660.,
      15024., 15536., 15904., 16272., 16640., 11220., 11592., 11964., 12336.,
      12824., 13200., 13576., 13952., 14460., 14840., 15220., 15600., 16128.,
      16512., 16896., 17280., 11620., 12008., 12396., 12784., 13288., 13680.,
      14072., 14464., 14988., 15384., 15780., 16176., 16720., 17120., 17520.,
      17920., 12020., 12424., 12828., 13232., 13752., 14160., 14568., 14976.,
      15516., 15928., 16340., 16752., 17312., 17728., 18144., 18560., 12420.,
      12840., 13260., 13680., 14216., 14640., 15064., 15488., 16044., 16472.,
      16900., 17328., 17904., 18336., 18768., 19200., 13620., 14088., 14556.,
      15024., 15608., 16080., 16552., 17024., 17628., 18104., 18580., 19056.,
      19680., 20160., 20640., 21120., 14020., 14504., 14988., 15472., 16072.,
      16560., 17048., 17536., 18156., 18648., 19140., 19632., 20272., 20768.,
      21264., 21760., 14420., 14920., 15420., 15920., 16536., 17040., 17544.,
      18048., 18684., 19192., 19700., 20208., 20864., 21376., 21888., 22400.,
      14820., 15336., 15852., 16368., 17000., 17520., 18040., 18560., 19212.,
      19736., 20260., 20784., 21456., 21984., 22512., 23040., 15220., 15752.,
      16284., 16816., 17464., 18000., 18536., 19072., 19740., 20280., 20820.,
      21360., 22048., 22592., 23136., 23680., 16420., 17000., 17580., 18160.,
      18856., 19440., 20024., 20608., 21324., 21912., 22500., 23088., 23824.,
      24416., 25008., 25600., 16820., 17416., 18012., 18608., 19320., 19920.,
      20520., 21120., 21852., 22456., 23060., 23664., 24416., 25024., 25632.,
      26240., 17220., 17832., 18444., 19056., 19784., 20400., 21016., 21632.,
      22380., 23000., 23620., 24240., 25008., 25632., 26256., 26880., 17620.,
      18248., 18876., 19504., 20248., 20880., 21512., 22144., 22908., 23544.,
      24180., 24816., 25600., 26240., 26880., 27520., 18020., 18664., 19308.,
      19952., 20712., 21360., 22008., 22656., 23436., 24088., 24740., 25392.,
      26192., 26848., 27504., 28160.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2376., 3062., 3188., 2286., 2376., 3168., 4070., 4196., 3006.,
      3096., 4000., 5128., 5264., 3760., 3856., 2160., 2726., 2804.,
      1962., 2016., 2664., 3350., 3428., 2394., 2448.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      134., 144., 154., 164., 174., 214., 224., 234., 244.,
      254., 294., 304., 314., 324., 334., 374., 384., 394.,
      404., 414., 454., 464., 474., 484., 494.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4572., 4752., 5884., 6124.,  6124.,  6376.,  4383., 4572., 4554., 4752.,
      6084., 6336., 7804., 8140.,  8044.,  8392.,  5751., 6012., 5922., 6192.,
      7664., 8000., 9808., 10256., 10064., 10528., 7172., 7520., 7352., 7712.,
      4068., 4320., 5116., 5452.,  5260.,  5608.,  3663., 3924., 3762., 4032.,
      5004., 5328., 6268., 6700.,  6412.,  6856.,  4455., 4788., 4554., 4896.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      228., 268., 244., 288., 260., 308., 276., 328., 292., 348.,
      356., 428., 372., 448., 388., 468., 404., 488., 420., 508.,
      484., 588., 500., 608., 516., 628., 532., 648., 548., 668.,
      612., 748., 628., 768., 644., 788., 660., 808., 676., 828.,
      740., 908., 756., 928., 772., 948., 788., 968., 804., 988.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8964.,  9144.,  9324.,  9504.,  11528., 11768., 12008., 12248., 11996.,
      12248., 12500., 12752., 8577.,  8766.,  8955.,  9144.,  8910.,  9108.,
      9306.,  9504.,  11916., 12168., 12420., 12672., 15272., 15608., 15944.,
      16280., 15740., 16088., 16436., 16784., 11241., 11502., 11763., 12024.,
      11574., 11844., 12114., 12384., 14992., 15328., 15664., 16000., 19168.,
      19616., 20064., 20512., 19664., 20128., 20592., 21056., 13996., 14344.,
      14692., 15040., 14344., 14704., 15064., 15424., 7884.,  8136.,  8388.,
      8640.,  9896.,  10232., 10568., 10904., 10172., 10520., 10868., 11216.,
      7065.,  7326.,  7587.,  7848.,  7254.,  7524.,  7794.,  8064.,  9684.,
      10008., 10332., 10656., 12104., 12536., 12968., 13400., 12380., 12824.,
      13268., 13712., 8577.,  8910.,  9243.,  9576.,  8766.,  9108.,  9450.,
      9792.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      416.,  456.,  496.,  536.,  444.,  488.,  532.,  576.,  472.,  520.,
      568.,  616.,  500.,  552.,  604.,  656.,  528.,  584.,  640.,  696.,
      640.,  712.,  784.,  856.,  668.,  744.,  820.,  896.,  696.,  776.,
      856.,  936.,  724.,  808.,  892.,  976.,  752.,  840.,  928.,  1016.,
      864.,  968.,  1072., 1176., 892.,  1000., 1108., 1216., 920.,  1032.,
      1144., 1256., 948.,  1064., 1180., 1296., 976.,  1096., 1216., 1336.,
      1088., 1224., 1360., 1496., 1116., 1256., 1396., 1536., 1144., 1288.,
      1432., 1576., 1172., 1320., 1468., 1616., 1200., 1352., 1504., 1656.,
      1312., 1480., 1648., 1816., 1340., 1512., 1684., 1856., 1368., 1544.,
      1720., 1896., 1396., 1576., 1756., 1936., 1424., 1608., 1792., 1976.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8955.,  9504.,  11528., 12248., 12008., 12752., 8595.,  9144.,  8937.,
      9504.,  11979., 12672., 15368., 16280., 15848., 16784., 11331., 12024.,
      11673., 12384., 15124., 16000., 19360., 20512., 19872., 21056., 14164.,
      15040., 14524., 15424., 8019.,  8640.,  10088., 10904., 10376., 11216.,
      7227.,  7848.,  7425.,  8064.,  9891.,  10656., 12392., 13400., 12680.,
      13712., 8811.,  9576.,  9009.,  9792.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      440.,  536.,  472.,  576.,  504.,  616.,  536.,  656.,  568.,  696.,
      696.,  856.,  728.,  896.,  760.,  936.,  792.,  976.,  824.,  1016.,
      952.,  1176., 984.,  1216., 1016., 1256., 1048., 1296., 1080., 1336.,
      1208., 1496., 1240., 1536., 1272., 1576., 1304., 1616., 1336., 1656.,
      1464., 1816., 1496., 1856., 1528., 1896., 1560., 1936., 1592., 1976.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17559., 17910., 18648., 19008., 22588., 23056., 24016., 24496., 23524.,
      24016., 25000., 25504., 16821., 17190., 17910., 18288., 17487., 17874.,
      18612., 19008., 23463., 23958., 24840., 25344., 30076., 30736., 31888.,
      32560., 31012., 31696., 32872., 33568., 22149., 22662., 23526., 24048.,
      22815., 23346., 24228., 24768., 29588., 30248., 31328., 32000., 37840.,
      38720., 40128., 41024., 38832., 39744., 41184., 42112., 27644., 28328.,
      29384., 30080., 28340., 29048., 30128., 30848., 15543., 16038., 16776.,
      17280., 19516., 20176., 21136., 21808., 20068., 20752., 21736., 22432.,
      13941., 14454., 15174., 15696., 14319., 14850., 15588., 16128., 19143.,
      19782., 20664., 21312., 23932., 24784., 25936., 26800., 24484., 25360.,
      26536., 27424., 16965., 17622., 18486., 19152., 17343., 18018., 18900.,
      19584.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      804.,  880.,  992.,  1072., 860.,  944.,  1064., 1152., 916.,  1008.,
      1136., 1232., 972.,  1072., 1208., 1312., 1028., 1136., 1280., 1392.,
      1252., 1392., 1568., 1712., 1308., 1456., 1640., 1792., 1364., 1520.,
      1712., 1872., 1420., 1584., 1784., 1952., 1476., 1648., 1856., 2032.,
      1700., 1904., 2144., 2352., 1756., 1968., 2216., 2432., 1812., 2032.,
      2288., 2512., 1868., 2096., 2360., 2592., 1924., 2160., 2432., 2672.,
      2148., 2416., 2720., 2992., 2204., 2480., 2792., 3072., 2260., 2544.,
      2864., 3152., 2316., 2608., 2936., 3232., 2372., 2672., 3008., 3312.,
      2596., 2928., 3296., 3632., 2652., 2992., 3368., 3712., 2708., 3056.,
      3440., 3792., 2764., 3120., 3512., 3872., 2820., 3184., 3584., 3952.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      34767., 35118., 35469., 35820., 36936., 37296., 37656., 38016., 44708.,
      45176., 45644., 46112., 47552., 48032., 48512., 48992., 46556., 47048.,
      47540., 48032., 49496., 50000., 50504., 51008., 33273., 33642., 34011.,
      34380., 35442., 35820., 36198., 36576., 34587., 34974., 35361., 35748.,
      36828., 37224., 37620., 38016., 46431., 46926., 47421., 47916., 49176.,
      49680., 50184., 50688., 59492., 60152., 60812., 61472., 63104., 63776.,
      64448., 65120., 61340., 62024., 62708., 63392., 65048., 65744., 66440.,
      67136., 43785., 44298., 44811., 45324., 46530., 47052., 47574., 48096.,
      45099., 45630., 46161., 46692., 47916., 48456., 48996., 49536., 58516.,
      59176., 59836., 60496., 61984., 62656., 63328., 64000., 74800., 75680.,
      76560., 77440., 79360., 80256., 81152., 82048., 76752., 77664., 78576.,
      79488., 81440., 82368., 83296., 84224., 54604., 55288., 55972., 56656.,
      58072., 58768., 59464., 60160., 55972., 56680., 57388., 58096., 59536.,
      60256., 60976., 61696., 30591., 31086., 31581., 32076., 33048., 33552.,
      34056., 34560., 38372., 39032., 39692., 40352., 41600., 42272., 42944.,
      43616., 39452., 40136., 40820., 41504., 42776., 43472., 44168., 44864.,
      27369., 27882., 28395., 28908., 29826., 30348., 30870., 31392., 28107.,
      28638., 29169., 29700., 30636., 31176., 31716., 32256., 37647., 38286.,
      38925., 39564., 40680., 41328., 41976., 42624., 47012., 47864., 48716.,
      49568., 51008., 51872., 52736., 53600., 48092., 48968., 49844., 50720.,
      52184., 53072., 53960., 54848., 33273., 33930., 34587., 35244., 36306.,
      36972., 37638., 38304., 34011., 34686., 35361., 36036., 37116., 37800.,
      38484., 39168.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1532., 1608., 1684., 1760., 1904., 1984., 2064., 2144., 1636., 1720.,
      1804., 1888., 2040., 2128., 2216., 2304., 1740., 1832., 1924., 2016.,
      2176., 2272., 2368., 2464., 1844., 1944., 2044., 2144., 2312., 2416.,
      2520., 2624., 1948., 2056., 2164., 2272., 2448., 2560., 2672., 2784.,
      2364., 2504., 2644., 2784., 2992., 3136., 3280., 3424., 2468., 2616.,
      2764., 2912., 3128., 3280., 3432., 3584., 2572., 2728., 2884., 3040.,
      3264., 3424., 3584., 3744., 2676., 2840., 3004., 3168., 3400., 3568.,
      3736., 3904., 2780., 2952., 3124., 3296., 3536., 3712., 3888., 4064.,
      3196., 3400., 3604., 3808., 4080., 4288., 4496., 4704., 3300., 3512.,
      3724., 3936., 4216., 4432., 4648., 4864., 3404., 3624., 3844., 4064.,
      4352., 4576., 4800., 5024., 3508., 3736., 3964., 4192., 4488., 4720.,
      4952., 5184., 3612., 3848., 4084., 4320., 4624., 4864., 5104., 5344.,
      4028., 4296., 4564., 4832., 5168., 5440., 5712., 5984., 4132., 4408.,
      4684., 4960., 5304., 5584., 5864., 6144., 4236., 4520., 4804., 5088.,
      5440., 5728., 6016., 6304., 4340., 4632., 4924., 5216., 5576., 5872.,
      6168., 6464., 4444., 4744., 5044., 5344., 5712., 6016., 6320., 6624.,
      4860., 5192., 5524., 5856., 6256., 6592., 6928., 7264., 4964., 5304.,
      5644., 5984., 6392., 6736., 7080., 7424., 5068., 5416., 5764., 6112.,
      6528., 6880., 7232., 7584., 5172., 5528., 5884., 6240., 6664., 7024.,
      7384., 7744., 5276., 5640., 6004., 6368., 6800., 7168., 7536., 7904.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      34749., 35820., 36909., 38016., 44708., 46112., 47540., 48992., 46580.,
      48032., 49508., 51008., 33309., 34380., 35469., 36576., 34641., 35748.,
      36873., 38016., 46557., 47916., 49293., 50688., 59684., 61472., 63284.,
      65120., 61556., 63392., 65252., 67136., 43965., 45324., 46701., 48096.,
      45297., 46692., 48105., 49536., 58780., 60496., 62236., 64000., 75184.,
      77440., 79728., 82048., 77168., 79488., 81840., 84224., 54940., 56656.,
      58396., 60160., 56332., 58096., 59884., 61696., 30861., 32076., 33309.,
      34560., 38756., 40352., 41972., 43616., 39860., 41504., 43172., 44864.,
      27693., 28908., 30141., 31392., 28449., 29700., 30969., 32256., 38061.,
      39564., 41085., 42624., 47588., 49568., 51572., 53600., 48692., 50720.,
      52772., 54848., 33741., 35244., 36765., 38304., 34497., 36036., 37593.,
      39168.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1580., 1760., 1948., 2144., 1692., 1888., 2092., 2304., 1804., 2016.,
      2236., 2464., 1916., 2144., 2380., 2624., 2028., 2272., 2524., 2784.,
      2476., 2784., 3100., 3424., 2588., 2912., 3244., 3584., 2700., 3040.,
      3388., 3744., 2812., 3168., 3532., 3904., 2924., 3296., 3676., 4064.,
      3372., 3808., 4252., 4704., 3484., 3936., 4396., 4864., 3596., 4064.,
      4540., 5024., 3708., 4192., 4684., 5184., 3820., 4320., 4828., 5344.,
      4268., 4832., 5404., 5984., 4380., 4960., 5548., 6144., 4492., 5088.,
      5692., 6304., 4604., 5216., 5836., 6464., 4716., 5344., 5980., 6624.,
      5164., 5856., 6556., 7264., 5276., 5984., 6700., 7424., 5388., 6112.,
      6844., 7584., 5500., 6240., 6988., 7744., 5612., 6368., 7132., 7904.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      68805.,  69498.,  70938.,  71640.,  73107.,  73818.,  75312.,  76032.,
      88492.,  89416.,  91288.,  92224.,  94132.,  95080.,  97024.,  97984.,
      92188.,  93160.,  95080.,  96064.,  98020.,  99016.,  101008., 102016.,
      65889.,  66618.,  68022.,  68760.,  70191.,  70938.,  72396.,  73152.,
      68517.,  69282.,  70722.,  71496.,  72963.,  73746.,  75240.,  76032.,
      92133.,  93114.,  94842.,  95832.,  97587.,  98586.,  100368., 101376.,
      118060., 119368., 121624., 122944., 125236., 126568., 128896., 130240.,
      121756., 123112., 125416., 126784., 129124., 130504., 132880., 134272.,
      86913.,  87930.,  89622.,  90648.,  92367.,  93402.,  95148.,  96192.,
      89541.,  90594.,  92322.,  93384.,  95139.,  96210.,  97992.,  99072.,
      116252., 117560., 119672., 120992., 123140., 124472., 126656., 128000.,
      148624., 150368., 153120., 154880., 157680., 159456., 162304., 164096.,
      152528., 154336., 157152., 158976., 161840., 163680., 166592., 168448.,
      108524., 109880., 111944., 113312., 115412., 116792., 118928., 120320.,
      111260., 112664., 114776., 116192., 118340., 119768., 121952., 123392.,
      60741.,  61722.,  63162.,  64152.,  65619.,  66618.,  68112.,  69120.,
      76204.,  77512.,  79384.,  80704.,  82612.,  83944.,  85888.,  87232.,
      78364.,  79720.,  81640.,  83008.,  84964.,  86344.,  88336.,  89728.,
      54369.,  55386.,  56790.,  57816.,  59247.,  60282.,  61740.,  62784.,
      55845.,  56898.,  58338.,  59400.,  60867.,  61938.,  63432.,  64512.,
      74853.,  76122.,  77850.,  79128.,  80883.,  82170.,  83952.,  85248.,
      93484.,  95176.,  97432.,  99136.,  101428., 103144., 105472., 107200.,
      95644.,  97384.,  99688.,  101440., 103780., 105544., 107920., 109696.,
      66177.,  67482.,  69174.,  70488.,  72207.,  73530.,  75276.,  76608.,
      67653.,  68994.,  70722.,  72072.,  73827.,  75186.,  76968.,  78336.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3012.,  3160.,  3368.,  3520.,  3740.,  3896.,  4128.,  4288.,  3220.,
      3384.,  3608.,  3776.,  4012.,  4184.,  4432.,  4608.,  3428.,  3608.,
      3848.,  4032.,  4284.,  4472.,  4736.,  4928.,  3636.,  3832.,  4088.,
      4288.,  4556.,  4760.,  5040.,  5248.,  3844.,  4056.,  4328.,  4544.,
      4828.,  5048.,  5344.,  5568.,  4676.,  4952.,  5288.,  5568.,  5916.,
      6200.,  6560.,  6848.,  4884.,  5176.,  5528.,  5824.,  6188.,  6488.,
      6864.,  7168.,  5092.,  5400.,  5768.,  6080.,  6460.,  6776.,  7168.,
      7488.,  5300.,  5624.,  6008.,  6336.,  6732.,  7064.,  7472.,  7808.,
      5508.,  5848.,  6248.,  6592.,  7004.,  7352.,  7776.,  8128.,  6340.,
      6744.,  7208.,  7616.,  8092.,  8504.,  8992.,  9408.,  6548.,  6968.,
      7448.,  7872.,  8364.,  8792.,  9296.,  9728.,  6756.,  7192.,  7688.,
      8128.,  8636.,  9080.,  9600.,  10048., 6964.,  7416.,  7928.,  8384.,
      8908.,  9368.,  9904.,  10368., 7172.,  7640.,  8168.,  8640.,  9180.,
      9656.,  10208., 10688., 8004.,  8536.,  9128.,  9664.,  10268., 10808.,
      11424., 11968., 8212.,  8760.,  9368.,  9920.,  10540., 11096., 11728.,
      12288., 8420.,  8984.,  9608.,  10176., 10812., 11384., 12032., 12608.,
      8628.,  9208.,  9848.,  10432., 11084., 11672., 12336., 12928., 8836.,
      9432.,  10088., 10688., 11356., 11960., 12640., 13248., 9668.,  10328.,
      11048., 11712., 12444., 13112., 13856., 14528., 9876.,  10552., 11288.,
      11968., 12716., 13400., 14160., 14848., 10084., 10776., 11528., 12224.,
      12988., 13688., 14464., 15168., 10292., 11000., 11768., 12480., 13260.,
      13976., 14768., 15488., 10500., 11224., 12008., 12736., 13532., 14264.,
      15072., 15808.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      136917., 137610., 138303., 138996., 141174., 141876., 142578., 143280.,
      145503., 146214., 146925., 147636., 149904., 150624., 151344., 152064.,
      176060., 176984., 177908., 178832., 181640., 182576., 183512., 184448.,
      187316., 188264., 189212., 190160., 193088., 194048., 195008., 195968.,
      183404., 184376., 185348., 186320., 189176., 190160., 191144., 192128.,
      195044., 196040., 197036., 198032., 201008., 202016., 203024., 204032.,
      131049., 131778., 132507., 133236., 135306., 136044., 136782., 137520.,
      139635., 140382., 141129., 141876., 144036., 144792., 145548., 146304.,
      136269., 137034., 137799., 138564., 140670., 141444., 142218., 142992.,
      145143., 145926., 146709., 147492., 149688., 150480., 151272., 152064.,
      183285., 184266., 185247., 186228., 188694., 189684., 190674., 191664.,
      194175., 195174., 196173., 197172., 199728., 200736., 201744., 202752.,
      234812., 236120., 237428., 238736., 241928., 243248., 244568., 245888.,
      249140., 250472., 251804., 253136., 256448., 257792., 259136., 260480.,
      242156., 243512., 244868., 246224., 249464., 250832., 252200., 253568.,
      256868., 258248., 259628., 261008., 264368., 265760., 267152., 268544.,
      172809., 173826., 174843., 175860., 178218., 179244., 180270., 181296.,
      183699., 184734., 185769., 186804., 189252., 190296., 191340., 192384.,
      178029., 179082., 180135., 181188., 183582., 184644., 185706., 186768.,
      189207., 190278., 191349., 192420., 194904., 195984., 197064., 198144.,
      231196., 232504., 233812., 235120., 238024., 239344., 240664., 241984.,
      244948., 246280., 247612., 248944., 251968., 253312., 254656., 256000.,
      295504., 297248., 298992., 300736., 304480., 306240., 308000., 309760.,
      313584., 315360., 317136., 318912., 322816., 324608., 326400., 328192.,
      303248., 305056., 306864., 308672., 312480., 314304., 316128., 317952.,
      321840., 323680., 325520., 327360., 331328., 333184., 335040., 336896.,
      215692., 217048., 218404., 219760., 222520., 223888., 225256., 226624.,
      229444., 230824., 232204., 233584., 236464., 237856., 239248., 240640.,
      221116., 222520., 223924., 225328., 228136., 229552., 230968., 232384.,
      235252., 236680., 238108., 239536., 242464., 243904., 245344., 246784.,
      120501., 121482., 122463., 123444., 125334., 126324., 127314., 128304.,
      130239., 131238., 132237., 133236., 135216., 136224., 137232., 138240.,
      151100., 152408., 153716., 155024., 157448., 158768., 160088., 161408.,
      163892., 165224., 166556., 167888., 170432., 171776., 173120., 174464.,
      155372., 156728., 158084., 159440., 161912., 163280., 164648., 166016.,
      168548., 169928., 171308., 172688., 175280., 176672., 178064., 179456.,
      107721., 108738., 109755., 110772., 112554., 113580., 114606., 115632.,
      117459., 118494., 119529., 120564., 122436., 123480., 124524., 125568.,
      110637., 111690., 112743., 113796., 115614., 116676., 117738., 118800.,
      120663., 121734., 122805., 123876., 125784., 126864., 127944., 129024.,
      148437., 149706., 150975., 152244., 154422., 155700., 156978., 158256.,
      160479., 161766., 163053., 164340., 166608., 167904., 169200., 170496.,
      185276., 186968., 188660., 190352., 193160., 194864., 196568., 198272.,
      201140., 202856., 204572., 206288., 209216., 210944., 212672., 214400.,
      189548., 191288., 193028., 194768., 197624., 199376., 201128., 202880.,
      205796., 207560., 209324., 211088., 214064., 215840., 217616., 219392.,
      131049., 132354., 133659., 134964., 137034., 138348., 139662., 140976.,
      143091., 144414., 145737., 147060., 149220., 150552., 151884., 153216.,
      133965., 135306., 136647., 137988., 140094., 141444., 142794., 144144.,
      146295., 147654., 149013., 150372., 152568., 153936., 155304., 156672.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5876.,  6024.,  6172.,  6320.,  6584.,  6736.,  6888.,  7040.,  7324.,
      7480.,  7636.,  7792.,  8096.,  8256.,  8416.,  8576.,  6276.,  6440.,
      6604.,  6768.,  7048.,  7216.,  7384.,  7552.,  7852.,  8024.,  8196.,
      8368.,  8688.,  8864.,  9040.,  9216.,  6676.,  6856.,  7036.,  7216.,
      7512.,  7696.,  7880.,  8064.,  8380.,  8568.,  8756.,  8944.,  9280.,
      9472.,  9664.,  9856.,  7076.,  7272.,  7468.,  7664.,  7976.,  8176.,
      8376.,  8576.,  8908.,  9112.,  9316.,  9520.,  9872.,  10080., 10288.,
      10496., 7476.,  7688.,  7900.,  8112.,  8440.,  8656.,  8872.,  9088.,
      9436.,  9656.,  9876.,  10096., 10464., 10688., 10912., 11136., 9076.,
      9352.,  9628.,  9904.,  10296., 10576., 10856., 11136., 11548., 11832.,
      12116., 12400., 12832., 13120., 13408., 13696., 9476.,  9768.,  10060.,
      10352., 10760., 11056., 11352., 11648., 12076., 12376., 12676., 12976.,
      13424., 13728., 14032., 14336., 9876.,  10184., 10492., 10800., 11224.,
      11536., 11848., 12160., 12604., 12920., 13236., 13552., 14016., 14336.,
      14656., 14976., 10276., 10600., 10924., 11248., 11688., 12016., 12344.,
      12672., 13132., 13464., 13796., 14128., 14608., 14944., 15280., 15616.,
      10676., 11016., 11356., 11696., 12152., 12496., 12840., 13184., 13660.,
      14008., 14356., 14704., 15200., 15552., 15904., 16256., 12276., 12680.,
      13084., 13488., 14008., 14416., 14824., 15232., 15772., 16184., 16596.,
      17008., 17568., 17984., 18400., 18816., 12676., 13096., 13516., 13936.,
      14472., 14896., 15320., 15744., 16300., 16728., 17156., 17584., 18160.,
      18592., 19024., 19456., 13076., 13512., 13948., 14384., 14936., 15376.,
      15816., 16256., 16828., 17272., 17716., 18160., 18752., 19200., 19648.,
      20096., 13476., 13928., 14380., 14832., 15400., 15856., 16312., 16768.,
      17356., 17816., 18276., 18736., 19344., 19808., 20272., 20736., 13876.,
      14344., 14812., 15280., 15864., 16336., 16808., 17280., 17884., 18360.,
      18836., 19312., 19936., 20416., 20896., 21376., 15476., 16008., 16540.,
      17072., 17720., 18256., 18792., 19328., 19996., 20536., 21076., 21616.,
      22304., 22848., 23392., 23936., 15876., 16424., 16972., 17520., 18184.,
      18736., 19288., 19840., 20524., 21080., 21636., 22192., 22896., 23456.,
      24016., 24576., 16276., 16840., 17404., 17968., 18648., 19216., 19784.,
      20352., 21052., 21624., 22196., 22768., 23488., 24064., 24640., 25216.,
      16676., 17256., 17836., 18416., 19112., 19696., 20280., 20864., 21580.,
      22168., 22756., 23344., 24080., 24672., 25264., 25856., 17076., 17672.,
      18268., 18864., 19576., 20176., 20776., 21376., 22108., 22712., 23316.,
      23920., 24672., 25280., 25888., 26496., 18676., 19336., 19996., 20656.,
      21432., 22096., 22760., 23424., 24220., 24888., 25556., 26224., 27040.,
      27712., 28384., 29056., 19076., 19752., 20428., 21104., 21896., 22576.,
      23256., 23936., 24748., 25432., 26116., 26800., 27632., 28320., 29008.,
      29696., 19476., 20168., 20860., 21552., 22360., 23056., 23752., 24448.,
      25276., 25976., 26676., 27376., 28224., 28928., 29632., 30336., 19876.,
      20584., 21292., 22000., 22824., 23536., 24248., 24960., 25804., 26520.,
      27236., 27952., 28816., 29536., 30256., 30976., 20276., 21000., 21724.,
      22448., 23288., 24016., 24744., 25472., 26332., 27064., 27796., 28528.,
      29408., 30144., 30880., 31616.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4880., 5935., 6130., 4730.,  4880., 6500., 7885., 8080., 6230.,
      6380., 8200., 9930., 10140., 7800., 7960., 4400., 5260., 5380.,
      4070., 4160., 5420., 6460.,  6580., 4970., 5060.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371.,  392.,  413.,  434.,  455.,  581.,  602.,  623.,  644.,
      665.,  791.,  812.,  833.,  854.,  875.,  1001., 1022., 1043.,
      1064., 1085., 1211., 1232., 1253., 1274., 1295.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9460.,  9760.,  11495., 11870., 11870., 12260., 9148.,  9460.,  9436.,
      9760.,  12580., 13000., 15245., 15770., 15620., 16160., 12028., 12460.,
      12316., 12760., 15840., 16400., 19160., 19860., 19560., 20280., 15024.,
      15600., 15328., 15920., 8380.,  8800.,  9995.,  10520., 10220., 10760.,
      7708.,  8140.,  7876.,  8320.,  10300., 10840., 12245., 12920., 12470.,
      13160., 9388.,  9940.,  9556.,  10120.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      664.,  742.,  700.,  784.,  736.,  826.,  772.,  868.,  808.,  910.,
      1024., 1162., 1060., 1204., 1096., 1246., 1132., 1288., 1168., 1330.,
      1384., 1582., 1420., 1624., 1456., 1666., 1492., 1708., 1528., 1750.,
      1744., 2002., 1780., 2044., 1816., 2086., 1852., 2128., 1888., 2170.,
      2104., 2422., 2140., 2464., 2176., 2506., 2212., 2548., 2248., 2590.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18620., 18920., 19220., 19520., 22615., 22990., 23365., 23740., 23350.,
      23740., 24130., 24520., 17984., 18296., 18608., 18920., 18548., 18872.,
      19196., 19520., 24740., 25160., 25580., 26000., 29965., 30490., 31015.,
      31540., 30700., 31240., 31780., 32320., 23624., 24056., 24488., 24920.,
      24188., 24632., 25076., 25520., 31120., 31680., 32240., 32800., 37620.,
      38320., 39020., 39720., 38400., 39120., 39840., 40560., 29472., 30048.,
      30624., 31200., 30064., 30656., 31248., 31840., 16340., 16760., 17180.,
      17600., 19465., 19990., 20515., 21040., 19900., 20440., 20980., 21520.,
      14984., 15416., 15848., 16280., 15308., 15752., 16196., 16640., 20060.,
      20600., 21140., 21680., 23815., 24490., 25165., 25840., 24250., 24940.,
      25630., 26320., 18224., 18776., 19328., 19880., 18548., 19112., 19676.,
      20240.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1250., 1328., 1406., 1484., 1316., 1400., 1484., 1568., 1382., 1472.,
      1562., 1652., 1448., 1544., 1640., 1736., 1514., 1616., 1718., 1820.,
      1910., 2048., 2186., 2324., 1976., 2120., 2264., 2408., 2042., 2192.,
      2342., 2492., 2108., 2264., 2420., 2576., 2174., 2336., 2498., 2660.,
      2570., 2768., 2966., 3164., 2636., 2840., 3044., 3248., 2702., 2912.,
      3122., 3332., 2768., 2984., 3200., 3416., 2834., 3056., 3278., 3500.,
      3230., 3488., 3746., 4004., 3296., 3560., 3824., 4088., 3362., 3632.,
      3902., 4172., 3428., 3704., 3980., 4256., 3494., 3776., 4058., 4340.,
      3890., 4208., 4526., 4844., 3956., 4280., 4604., 4928., 4022., 4352.,
      4682., 5012., 4088., 4424., 4760., 5096., 4154., 4496., 4838., 5180.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18608., 19520., 22615., 23740., 23365., 24520., 18008., 18920., 18584.,
      19520., 24848., 26000., 30115., 31540., 30865., 32320., 23768., 24920.,
      24344., 25520., 31344., 32800., 37920., 39720., 38720., 40560., 29744.,
      31200., 30352., 31840., 16568., 17600., 19765., 21040., 20215., 21520.,
      15248., 16280., 15584., 16640., 20408., 21680., 24265., 25840., 24715.,
      26320., 18608., 19880., 18944., 20240.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1292., 1484., 1364., 1568., 1436., 1652., 1508., 1736., 1580., 1820.,
      2012., 2324., 2084., 2408., 2156., 2492., 2228., 2576., 2300., 2660.,
      2732., 3164., 2804., 3248., 2876., 3332., 2948., 3416., 3020., 3500.,
      3452., 4004., 3524., 4088., 3596., 4172., 3668., 4256., 3740., 4340.,
      4172., 4844., 4244., 4928., 4316., 5012., 4388., 5096., 4460., 5180.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      36628., 37216., 38440., 39040., 44495., 45230., 46730., 47480., 45965.,
      46730., 48260., 49040., 35404., 36016., 37216., 37840., 36532., 37168.,
      38392., 39040., 48868., 49696., 51160., 52000., 59195., 60230., 62030.,
      63080., 60665., 61730., 63560., 64640., 46684., 47536., 48976., 49840.,
      47812., 48688., 50152., 51040., 61584., 62688., 64480., 65600., 74460.,
      75840., 78040., 79440., 76020., 77440., 79680., 81120., 58352., 59488.,
      61248., 62400., 59536., 60704., 62496., 63680., 32308., 33136., 34360.,
      35200., 38495., 39530., 41030., 42080., 39365., 40430., 41960., 43040.,
      29644., 30496., 31696., 32560., 30292., 31168., 32392., 33280., 39748.,
      40816., 42280., 43360., 47195., 48530., 50330., 51680., 48065., 49430.,
      51260., 52640., 36124., 37216., 38656., 39760., 36772., 37888., 39352.,
      40480.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2434., 2584.,  2812., 2968., 2566., 2728.,  2968., 3136., 2698., 2872.,
      3124., 3304.,  2830., 3016., 3280., 3472.,  2962., 3160., 3436., 3640.,
      3754., 4024.,  4372., 4648., 3886., 4168.,  4528., 4816., 4018., 4312.,
      4684., 4984.,  4150., 4456., 4840., 5152.,  4282., 4600., 4996., 5320.,
      5074., 5464.,  5932., 6328., 5206., 5608.,  6088., 6496., 5338., 5752.,
      6244., 6664.,  5470., 5896., 6400., 6832.,  5602., 6040., 6556., 7000.,
      6394., 6904.,  7492., 8008., 6526., 7048.,  7648., 8176., 6658., 7192.,
      7804., 8344.,  6790., 7336., 7960., 8512.,  6922., 7480., 8116., 8680.,
      7714., 8344.,  9052., 9688., 7846., 8488.,  9208., 9856., 7978., 8632.,
      9364., 10024., 8110., 8776., 9520., 10192., 8242., 8920., 9676., 10360.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72668.,  73256.,  73844.,  74432.,  76280.,  76880.,  77480.,  78080.,
      88255.,  88990.,  89725.,  90460.,  92710.,  93460.,  94210.,  94960.,
      91165.,  91930.,  92695.,  93460.,  95740.,  96520.,  97300.,  98080.,
      70196.,  70808.,  71420.,  72032.,  73808.,  74432.,  75056.,  75680.,
      72428.,  73064.,  73700.,  74336.,  76136.,  76784.,  77432.,  78080.,
      96908.,  97736.,  98564.,  99392.,  101480., 102320., 103160., 104000.,
      117355., 118390., 119425., 120460., 123010., 124060., 125110., 126160.,
      120265., 121330., 122395., 123460., 126040., 127120., 128200., 129280.,
      92516.,  93368.,  94220.,  95072.,  97088.,  97952.,  98816.,  99680.,
      94748.,  95624.,  96500.,  97376.,  99416.,  100304., 101192., 102080.,
      122064., 123168., 124272., 125376., 127840., 128960., 130080., 131200.,
      147540., 148920., 150300., 151680., 154680., 156080., 157480., 158880.,
      150620., 152040., 153460., 154880., 157920., 159360., 160800., 162240.,
      115568., 116704., 117840., 118976., 121344., 122496., 123648., 124800.,
      117904., 119072., 120240., 121408., 123808., 124992., 126176., 127360.,
      63788.,  64616.,  65444.,  66272.,  67880.,  68720.,  69560.,  70400.,
      75955.,  76990.,  78025.,  79060.,  81010.,  82060.,  83110.,  84160.,
      77665.,  78730.,  79795.,  80860.,  82840.,  83920.,  85000.,  86080.,
      58436.,  59288.,  60140.,  60992.,  62528.,  63392.,  64256.,  65120.,
      59708.,  60584.,  61460.,  62336.,  63896.,  64784.,  65672.,  66560.,
      78428.,  79496.,  80564.,  81632.,  83480.,  84560.,  85640.,  86720.,
      93055.,  94390.,  95725.,  97060.,  99310.,  100660., 102010., 103360.,
      94765.,  96130.,  97495.,  98860.,  101140., 102520., 103900., 105280.,
      71156.,  72248.,  73340.,  74432.,  76208.,  77312.,  78416.,  79520.,
      72428.,  73544.,  74660.,  75776.,  77576.,  78704.,  79832.,  80960.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4718.,  4868.,  5018.,  5168.,  5468.,  5624.,  5780.,  5936.,  4970.,
      5132.,  5294.,  5456.,  5768.,  5936.,  6104.,  6272.,  5222.,  5396.,
      5570.,  5744.,  6068.,  6248.,  6428.,  6608.,  5474.,  5660.,  5846.,
      6032.,  6368.,  6560.,  6752.,  6944.,  5726.,  5924.,  6122.,  6320.,
      6668.,  6872.,  7076.,  7280.,  7238.,  7508.,  7778.,  8048.,  8468.,
      8744.,  9020.,  9296.,  7490.,  7772.,  8054.,  8336.,  8768.,  9056.,
      9344.,  9632.,  7742.,  8036.,  8330.,  8624.,  9068.,  9368.,  9668.,
      9968.,  7994.,  8300.,  8606.,  8912.,  9368.,  9680.,  9992.,  10304.,
      8246.,  8564.,  8882.,  9200.,  9668.,  9992.,  10316., 10640., 9758.,
      10148., 10538., 10928., 11468., 11864., 12260., 12656., 10010., 10412.,
      10814., 11216., 11768., 12176., 12584., 12992., 10262., 10676., 11090.,
      11504., 12068., 12488., 12908., 13328., 10514., 10940., 11366., 11792.,
      12368., 12800., 13232., 13664., 10766., 11204., 11642., 12080., 12668.,
      13112., 13556., 14000., 12278., 12788., 13298., 13808., 14468., 14984.,
      15500., 16016., 12530., 13052., 13574., 14096., 14768., 15296., 15824.,
      16352., 12782., 13316., 13850., 14384., 15068., 15608., 16148., 16688.,
      13034., 13580., 14126., 14672., 15368., 15920., 16472., 17024., 13286.,
      13844., 14402., 14960., 15668., 16232., 16796., 17360., 14798., 15428.,
      16058., 16688., 17468., 18104., 18740., 19376., 15050., 15692., 16334.,
      16976., 17768., 18416., 19064., 19712., 15302., 15956., 16610., 17264.,
      18068., 18728., 19388., 20048., 15554., 16220., 16886., 17552., 18368.,
      19040., 19712., 20384., 15806., 16484., 17162., 17840., 18668., 19352.,
      20036., 20720.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72644.,  74432.,  76244.,  78080.,  88255.,  90460.,  92695.,  94960.,
      91195.,  93460.,  95755.,  98080.,  70244.,  72032.,  73844.,  75680.,
      72500.,  74336.,  76196.,  78080.,  97124.,  99392.,  101684., 104000.,
      117655., 120460., 123295., 126160., 120595., 123460., 126355., 129280.,
      92804.,  95072.,  97364.,  99680.,  95060.,  97376.,  99716.,  102080.,
      122512., 125376., 128272., 131200., 148140., 151680., 155260., 158880.,
      151260., 154880., 158540., 162240., 116112., 118976., 121872., 124800.,
      118480., 121408., 124368., 127360., 64244.,  66272.,  68324.,  70400.,
      76555.,  79060.,  81595.,  84160.,  78295.,  80860.,  83455.,  86080.,
      58964.,  60992.,  63044.,  65120.,  60260.,  62336.,  64436.,  66560.,
      79124.,  81632.,  84164.,  86720.,  93955.,  97060.,  100195., 103360.,
      95695.,  98860.,  102055., 105280., 71924.,  74432.,  76964.,  79520.,
      73220.,  75776.,  78356.,  80960.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4802.,  5168.,  5546.,  5936.,  5066.,  5456.,  5858.,  6272.,  5330.,
      5744.,  6170.,  6608.,  5594.,  6032.,  6482.,  6944.,  5858.,  6320.,
      6794.,  7280.,  7442.,  8048.,  8666.,  9296.,  7706.,  8336.,  8978.,
      9632.,  7970.,  8624.,  9290.,  9968.,  8234.,  8912.,  9602.,  10304.,
      8498.,  9200.,  9914.,  10640., 10082., 10928., 11786., 12656., 10346.,
      11216., 12098., 12992., 10610., 11504., 12410., 13328., 10874., 11792.,
      12722., 13664., 11138., 12080., 13034., 14000., 12722., 13808., 14906.,
      16016., 12986., 14096., 15218., 16352., 13250., 14384., 15530., 16688.,
      13514., 14672., 15842., 17024., 13778., 14960., 16154., 17360., 15362.,
      16688., 18026., 19376., 15626., 16976., 18338., 19712., 15890., 17264.,
      18650., 20048., 16154., 17552., 18962., 20384., 16418., 17840., 19274.,
      20720.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      144124., 145288., 147688., 148864., 151300., 152488., 154960., 156160.,
      175055., 176510., 179450., 180920., 183905., 185390., 188420., 189920.,
      180875., 182390., 185390., 186920., 189965., 191510., 194600., 196160.,
      139276., 140488., 142840., 144064., 146452., 147688., 150112., 151360.,
      143740., 145000., 147400., 148672., 151108., 152392., 154864., 156160.,
      192604., 194248., 197128., 198784., 201700., 203368., 206320., 208000.,
      233255., 235310., 238850., 240920., 244505., 246590., 250220., 252320.,
      239075., 241190., 244790., 246920., 250565., 252710., 256400., 258560.,
      183916., 185608., 188440., 190144., 193012., 194728., 197632., 199360.,
      188380., 190120., 193000., 194752., 197668., 199432., 202384., 204160.,
      242832., 245024., 248544., 250752., 254320., 256544., 260160., 262400.,
      293540., 296280., 300600., 303360., 307740., 310520., 314960., 317760.,
      299700., 302520., 306920., 309760., 314220., 317080., 321600., 324480.,
      229968., 232224., 235680., 237952., 241456., 243744., 247296., 249600.,
      234640., 236960., 240480., 242816., 246384., 248736., 252352., 254720.,
      126844., 128488., 130888., 132544., 134980., 136648., 139120., 140800.,
      151055., 153110., 156050., 158120., 161105., 163190., 166220., 168320.,
      154475., 156590., 159590., 161720., 164765., 166910., 170000., 172160.,
      116236., 117928., 120280., 121984., 124372., 126088., 128512., 130240.,
      118780., 120520., 122920., 124672., 127108., 128872., 131344., 133120.,
      156124., 158248., 161128., 163264., 166180., 168328., 171280., 173440.,
      185255., 187910., 191450., 194120., 197705., 200390., 204020., 206720.,
      188675., 191390., 194990., 197720., 201365., 204110., 207800., 210560.,
      141676., 143848., 146680., 148864., 151732., 153928., 156832., 159040.,
      144220., 146440., 149320., 151552., 154468., 156712., 159664., 161920.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9310.,  9604.,  10036., 10336., 10786., 11092., 11560., 11872., 9814.,
      10132., 10588., 10912., 11386., 11716., 12208., 12544., 10318., 10660.,
      11140., 11488., 11986., 12340., 12856., 13216., 10822., 11188., 11692.,
      12064., 12586., 12964., 13504., 13888., 11326., 11716., 12244., 12640.,
      13186., 13588., 14152., 14560., 14350., 14884., 15556., 16096., 16786.,
      17332., 18040., 18592., 14854., 15412., 16108., 16672., 17386., 17956.,
      18688., 19264., 15358., 15940., 16660., 17248., 17986., 18580., 19336.,
      19936., 15862., 16468., 17212., 17824., 18586., 19204., 19984., 20608.,
      16366., 16996., 17764., 18400., 19186., 19828., 20632., 21280., 19390.,
      20164., 21076., 21856., 22786., 23572., 24520., 25312., 19894., 20692.,
      21628., 22432., 23386., 24196., 25168., 25984., 20398., 21220., 22180.,
      23008., 23986., 24820., 25816., 26656., 20902., 21748., 22732., 23584.,
      24586., 25444., 26464., 27328., 21406., 22276., 23284., 24160., 25186.,
      26068., 27112., 28000., 24430., 25444., 26596., 27616., 28786., 29812.,
      31000., 32032., 24934., 25972., 27148., 28192., 29386., 30436., 31648.,
      32704., 25438., 26500., 27700., 28768., 29986., 31060., 32296., 33376.,
      25942., 27028., 28252., 29344., 30586., 31684., 32944., 34048., 26446.,
      27556., 28804., 29920., 31186., 32308., 33592., 34720., 29470., 30724.,
      32116., 33376., 34786., 36052., 37480., 38752., 29974., 31252., 32668.,
      33952., 35386., 36676., 38128., 39424., 30478., 31780., 33220., 34528.,
      35986., 37300., 38776., 40096., 30982., 32308., 33772., 35104., 36586.,
      37924., 39424., 40768., 31486., 32836., 34324., 35680., 37186., 38548.,
      40072., 41440.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      287084., 288248., 289412., 290576., 294200., 295376., 296552., 297728.,
      301412., 302600., 303788., 304976., 308720., 309920., 311120., 312320.,
      348655., 350110., 351565., 353020., 357430., 358900., 360370., 361840.,
      366325., 367810., 369295., 370780., 375340., 376840., 378340., 379840.,
      360235., 361750., 363265., 364780., 369250., 370780., 372310., 373840.,
      378385., 379930., 381475., 383020., 387640., 389200., 390760., 392320.,
      277340., 278552., 279764., 280976., 284456., 285680., 286904., 288128.,
      291668., 292904., 294140., 295376., 298976., 300224., 301472., 302720.,
      286220., 287480., 288740., 290000., 293528., 294800., 296072., 297344.,
      300932., 302216., 303500., 304784., 308432., 309728., 311024., 312320.,
      383564., 385208., 386852., 388496., 392600., 394256., 395912., 397568.,
      401732., 403400., 405068., 406736., 410960., 412640., 414320., 416000.,
      464455., 466510., 468565., 470620., 475630., 477700., 479770., 481840.,
      486925., 489010., 491095., 493180., 498340., 500440., 502540., 504640.,
      476035., 478150., 480265., 482380., 487450., 489580., 491710., 493840.,
      498985., 501130., 503275., 505420., 510640., 512800., 514960., 517120.,
      366140., 367832., 369524., 371216., 375176., 376880., 378584., 380288.,
      384308., 386024., 387740., 389456., 393536., 395264., 396992., 398720.,
      375020., 376760., 378500., 380240., 384248., 386000., 387752., 389504.,
      393572., 395336., 397100., 398864., 402992., 404768., 406544., 408320.,
      483472., 485664., 487856., 490048., 494880., 497088., 499296., 501504.,
      506416., 508640., 510864., 513088., 518080., 520320., 522560., 524800.,
      584340., 587080., 589820., 592560., 598440., 601200., 603960., 606720.,
      612700., 615480., 618260., 621040., 627120., 629920., 632720., 635520.,
      596580., 599400., 602220., 605040., 611000., 613840., 616680., 619520.,
      625580., 628440., 631300., 634160., 640320., 643200., 646080., 648960.,
      457680., 459936., 462192., 464448., 469088., 471360., 473632., 475904.,
      480624., 482912., 485200., 487488., 492288., 494592., 496896., 499200.,
      466960., 469280., 471600., 473920., 478624., 480960., 483296., 485632.,
      490416., 492768., 495120., 497472., 502336., 504704., 507072., 509440.,
      252044., 253688., 255332., 256976., 260120., 261776., 263432., 265088.,
      268292., 269960., 271628., 273296., 276560., 278240., 279920., 281600.,
      300055., 302110., 304165., 306220., 310030., 312100., 314170., 316240.,
      320125., 322210., 324295., 326380., 330340., 332440., 334540., 336640.,
      306835., 308950., 311065., 313180., 317050., 319180., 321310., 323440.,
      327385., 329530., 331675., 333820., 337840., 340000., 342160., 344320.,
      230780., 232472., 234164., 235856., 238856., 240560., 242264., 243968.,
      247028., 248744., 250460., 252176., 255296., 257024., 258752., 260480.,
      235820., 237560., 239300., 241040., 244088., 245840., 247592., 249344.,
      252452., 254216., 255980., 257744., 260912., 262688., 264464., 266240.,
      310124., 312248., 314372., 316496., 320120., 322256., 324392., 326528.,
      330212., 332360., 334508., 336656., 340400., 342560., 344720., 346880.,
      367855., 370510., 373165., 375820., 380230., 382900., 385570., 388240.,
      392725., 395410., 398095., 400780., 405340., 408040., 410740., 413440.,
      374635., 377350., 380065., 382780., 387250., 389980., 392710., 395440.,
      399985., 402730., 405475., 408220., 412840., 415600., 418360., 421120.,
      281180., 283352., 285524., 287696., 291176., 293360., 295544., 297728.,
      301268., 303464., 305660., 307856., 311456., 313664., 315872., 318080.,
      286220., 288440., 290660., 292880., 296408., 298640., 300872., 303104.,
      306692., 308936., 311180., 313424., 317072., 319328., 321584., 323840.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18326., 18620., 18914., 19208., 19772., 20072., 20372., 20672., 21266.,
      21572., 21878., 22184., 22808., 23120., 23432., 23744., 19310., 19628.,
      19946., 20264., 20852., 21176., 21500., 21824., 22442., 22772., 23102.,
      23432., 24080., 24416., 24752., 25088., 20294., 20636., 20978., 21320.,
      21932., 22280., 22628., 22976., 23618., 23972., 24326., 24680., 25352.,
      25712., 26072., 26432., 21278., 21644., 22010., 22376., 23012., 23384.,
      23756., 24128., 24794., 25172., 25550., 25928., 26624., 27008., 27392.,
      27776., 22262., 22652., 23042., 23432., 24092., 24488., 24884., 25280.,
      25970., 26372., 26774., 27176., 27896., 28304., 28712., 29120., 28166.,
      28700., 29234., 29768., 30572., 31112., 31652., 32192., 33026., 33572.,
      34118., 34664., 35528., 36080., 36632., 37184., 29150., 29708., 30266.,
      30824., 31652., 32216., 32780., 33344., 34202., 34772., 35342., 35912.,
      36800., 37376., 37952., 38528., 30134., 30716., 31298., 31880., 32732.,
      33320., 33908., 34496., 35378., 35972., 36566., 37160., 38072., 38672.,
      39272., 39872., 31118., 31724., 32330., 32936., 33812., 34424., 35036.,
      35648., 36554., 37172., 37790., 38408., 39344., 39968., 40592., 41216.,
      32102., 32732., 33362., 33992., 34892., 35528., 36164., 36800., 37730.,
      38372., 39014., 39656., 40616., 41264., 41912., 42560., 38006., 38780.,
      39554., 40328., 41372., 42152., 42932., 43712., 44786., 45572., 46358.,
      47144., 48248., 49040., 49832., 50624., 38990., 39788., 40586., 41384.,
      42452., 43256., 44060., 44864., 45962., 46772., 47582., 48392., 49520.,
      50336., 51152., 51968., 39974., 40796., 41618., 42440., 43532., 44360.,
      45188., 46016., 47138., 47972., 48806., 49640., 50792., 51632., 52472.,
      53312., 40958., 41804., 42650., 43496., 44612., 45464., 46316., 47168.,
      48314., 49172., 50030., 50888., 52064., 52928., 53792., 54656., 41942.,
      42812., 43682., 44552., 45692., 46568., 47444., 48320., 49490., 50372.,
      51254., 52136., 53336., 54224., 55112., 56000., 47846., 48860., 49874.,
      50888., 52172., 53192., 54212., 55232., 56546., 57572., 58598., 59624.,
      60968., 62000., 63032., 64064., 48830., 49868., 50906., 51944., 53252.,
      54296., 55340., 56384., 57722., 58772., 59822., 60872., 62240., 63296.,
      64352., 65408., 49814., 50876., 51938., 53000., 54332., 55400., 56468.,
      57536., 58898., 59972., 61046., 62120., 63512., 64592., 65672., 66752.,
      50798., 51884., 52970., 54056., 55412., 56504., 57596., 58688., 60074.,
      61172., 62270., 63368., 64784., 65888., 66992., 68096., 51782., 52892.,
      54002., 55112., 56492., 57608., 58724., 59840., 61250., 62372., 63494.,
      64616., 66056., 67184., 68312., 69440., 57686., 58940., 60194., 61448.,
      62972., 64232., 65492., 66752., 68306., 69572., 70838., 72104., 73688.,
      74960., 76232., 77504., 58670., 59948., 61226., 62504., 64052., 65336.,
      66620., 67904., 69482., 70772., 72062., 73352., 74960., 76256., 77552.,
      78848., 59654., 60956., 62258., 63560., 65132., 66440., 67748., 69056.,
      70658., 71972., 73286., 74600., 76232., 77552., 78872., 80192., 60638.,
      61964., 63290., 64616., 66212., 67544., 68876., 70208., 71834., 73172.,
      74510., 75848., 77504., 78848., 80192., 81536., 61622., 62972., 64322.,
      65672., 67292., 68648., 70004., 71360., 73010., 74372., 75734., 77096.,
      78776., 80144., 81512., 82880.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2724., 2823., 3628., 2598., 2688., 3448., 3556., 4560., 3256.,
      3352., 4204., 4312., 5512., 3928., 4024., 2301., 2364., 2974.,
      2076., 2130., 2742., 2805., 3520., 2454., 2508.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      120., 130., 140., 150., 160., 190., 200., 210., 220.,
      230., 260., 270., 280., 290., 300., 330., 340., 350.,
      360., 370., 400., 410., 420., 430., 440.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5232., 5448., 5421., 5646., 6956.,  7256.,  4971., 5196., 5142., 5376.,
      6608., 6896., 6812., 7112., 8720.,  9120.,  6212., 6512., 6392., 6704.,
      8036., 8408., 8240., 8624., 10512., 11024., 7472., 7856., 7652., 8048.,
      4323., 4602., 4440., 4728., 5564.,  5948.,  3864., 4152., 3963., 4260.,
      5142., 5484., 5259., 5610., 6572.,  7040.,  4557., 4908., 4656., 5016.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      204., 240., 220., 260., 236., 280., 252., 300., 268., 320.,
      316., 380., 332., 400., 348., 420., 364., 440., 380., 460.,
      428., 520., 444., 540., 460., 560., 476., 580., 492., 600.,
      540., 660., 556., 680., 572., 700., 588., 720., 604., 740.,
      652., 800., 668., 820., 684., 840., 700., 860., 716., 880.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10248., 10464., 10680., 10896., 10617., 10842., 11067., 11292., 13612.,
      13912., 14212., 14512., 9717.,  9942.,  10167., 10392., 10050., 10284.,
      10518., 10752., 12928., 13216., 13504., 13792., 13324., 13624., 13924.,
      14224., 17040., 17440., 17840., 18240., 12124., 12424., 12724., 13024.,
      12472., 12784., 13096., 13408., 15700., 16072., 16444., 16816., 16096.,
      16480., 16864., 17248., 20512., 21024., 21536., 22048., 14560., 14944.,
      15328., 15712., 14908., 15304., 15700., 16096., 8367.,  8646.,  8925.,
      9204.,  8592.,  8880.,  9168.,  9456.,  10744., 11128., 11512., 11896.,
      7440.,  7728.,  8016.,  8304.,  7629.,  7926.,  8223.,  8520.,  9942.,
      10284., 10626., 10968., 10167., 10518., 10869., 11220., 12676., 13144.,
      13612., 14080., 8763.,  9114.,  9465.,  9816.,  8952.,  9312.,  9672.,
      10032.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      372.,  408.,  444.,  480.,  400.,  440.,  480.,  520.,  428.,  472.,
      516.,  560.,  456.,  504.,  552.,  600.,  484.,  536.,  588.,  640.,
      568.,  632.,  696.,  760.,  596.,  664.,  732.,  800.,  624.,  696.,
      768.,  840.,  652.,  728.,  804.,  880.,  680.,  760.,  840.,  920.,
      764.,  856.,  948.,  1040., 792.,  888.,  984.,  1080., 820.,  920.,
      1020., 1120., 848.,  952.,  1056., 1160., 876.,  984.,  1092., 1200.,
      960.,  1080., 1200., 1320., 988.,  1112., 1236., 1360., 1016., 1144.,
      1272., 1400., 1044., 1176., 1308., 1440., 1072., 1208., 1344., 1480.,
      1156., 1304., 1452., 1600., 1184., 1336., 1488., 1640., 1212., 1368.,
      1524., 1680., 1240., 1400., 1560., 1720., 1268., 1432., 1596., 1760.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10275., 10896., 10653., 11292., 13672., 14512., 9771.,  10392., 10113.,
      10752., 13012., 13792., 13420., 14224., 17184., 18240., 12244., 13024.,
      12604., 13408., 15868., 16816., 16276., 17248., 20768., 22048., 14764.,
      15712., 15124., 16096., 8529.,  9204.,  8763.,  9456.,  10984., 11896.,
      7629.,  8304.,  7827.,  8520.,  10167., 10968., 10401., 11220., 13000.,
      14080., 9015.,  9816.,  9213.,  10032.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      392.,  480.,  424.,  520.,  456.,  560.,  488.,  600.,  520.,  640.,
      616.,  760.,  648.,  800.,  680.,  840.,  712.,  880.,  744.,  920.,
      840.,  1040., 872.,  1080., 904.,  1120., 936.,  1160., 968.,  1200.,
      1064., 1320., 1096., 1360., 1128., 1400., 1160., 1440., 1192., 1480.,
      1288., 1600., 1320., 1640., 1352., 1680., 1384., 1720., 1416., 1760.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20127., 20550., 21360., 21792., 20865., 21306., 22134., 22584., 26756.,
      27344., 28424., 29024., 19101., 19542., 20334., 20784., 19767., 20226.,
      21036., 21504., 25460., 26024., 27008., 27584., 26252., 26840., 27848.,
      28448., 33584., 34368., 35680., 36480., 23900., 24488., 25448., 26048.,
      24596., 25208., 26192., 26816., 31004., 31736., 32888., 33632., 31796.,
      32552., 33728., 34496., 40528., 41536., 43072., 44096., 28772., 29528.,
      30656., 31424., 29468., 30248., 31400., 32192., 16509., 17058., 17850.,
      18408., 16959., 17526., 18336., 18912., 21212., 21968., 23024., 23792.,
      14691., 15258., 16032., 16608., 15069., 15654., 16446., 17040., 19659.,
      20334., 21252., 21936., 20109., 20802., 21738., 22440., 25076., 26000.,
      27224., 28160., 17337., 18030., 18930., 19632., 17715., 18426., 19344.,
      20064.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      716.,  784.,  888.,  960.,  772.,  848.,  960.,  1040., 828.,  912.,
      1032., 1120., 884.,  976.,  1104., 1200., 940.,  1040., 1176., 1280.,
      1108., 1232., 1392., 1520., 1164., 1296., 1464., 1600., 1220., 1360.,
      1536., 1680., 1276., 1424., 1608., 1760., 1332., 1488., 1680., 1840.,
      1500., 1680., 1896., 2080., 1556., 1744., 1968., 2160., 1612., 1808.,
      2040., 2240., 1668., 1872., 2112., 2320., 1724., 1936., 2184., 2400.,
      1892., 2128., 2400., 2640., 1948., 2192., 2472., 2720., 2004., 2256.,
      2544., 2800., 2060., 2320., 2616., 2880., 2116., 2384., 2688., 2960.,
      2284., 2576., 2904., 3200., 2340., 2640., 2976., 3280., 2396., 2704.,
      3048., 3360., 2452., 2768., 3120., 3440., 2508., 2832., 3192., 3520.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39831., 40254., 40677., 41100., 42288., 42720., 43152., 43584., 41289.,
      41730., 42171., 42612., 43818., 44268., 44718., 45168., 52924., 53512.,
      54100., 54688., 56248., 56848., 57448., 58048., 37761., 38202., 38643.,
      39084., 40218., 40668., 41118., 41568., 39075., 39534., 39993., 40452.,
      41604., 42072., 42540., 43008., 50356., 50920., 51484., 52048., 53440.,
      54016., 54592., 55168., 51916., 52504., 53092., 53680., 55096., 55696.,
      56296., 56896., 66384., 67168., 67952., 68736., 70560., 71360., 72160.,
      72960., 47212., 47800., 48388., 48976., 50296., 50896., 51496., 52096.,
      48580., 49192., 49804., 50416., 51760., 52384., 53008., 53632., 61276.,
      62008., 62740., 63472., 65032., 65776., 66520., 67264., 62836., 63592.,
      64348., 65104., 66688., 67456., 68224., 68992., 80048., 81056., 82064.,
      83072., 85120., 86144., 87168., 88192., 56788., 57544., 58300., 59056.,
      60544., 61312., 62080., 62848., 58156., 58936., 59716., 60496., 62008.,
      62800., 63592., 64384., 32469., 33018., 33567., 34116., 35142., 35700.,
      36258., 36816., 33351., 33918., 34485., 35052., 36096., 36672., 37248.,
      37824., 41668., 42424., 43180., 43936., 45280., 46048., 46816., 47584.,
      28815., 29382., 29949., 30516., 31488., 32064., 32640., 33216., 29553.,
      30138., 30723., 31308., 32298., 32892., 33486., 34080., 38643., 39318.,
      39993., 40668., 41820., 42504., 43188., 43872., 39525., 40218., 40911.,
      41604., 42774., 43476., 44178., 44880., 49228., 50152., 51076., 52000.,
      53512., 54448., 55384., 56320., 33981., 34674., 35367., 36060., 37158.,
      37860., 38562., 39264., 34719., 35430., 36141., 36852., 37968., 38688.,
      39408., 40128.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1364., 1432., 1500., 1568., 1704., 1776., 1848., 1920., 1468., 1544.,
      1620., 1696., 1840., 1920., 2000., 2080., 1572., 1656., 1740., 1824.,
      1976., 2064., 2152., 2240., 1676., 1768., 1860., 1952., 2112., 2208.,
      2304., 2400., 1780., 1880., 1980., 2080., 2248., 2352., 2456., 2560.,
      2092., 2216., 2340., 2464., 2656., 2784., 2912., 3040., 2196., 2328.,
      2460., 2592., 2792., 2928., 3064., 3200., 2300., 2440., 2580., 2720.,
      2928., 3072., 3216., 3360., 2404., 2552., 2700., 2848., 3064., 3216.,
      3368., 3520., 2508., 2664., 2820., 2976., 3200., 3360., 3520., 3680.,
      2820., 3000., 3180., 3360., 3608., 3792., 3976., 4160., 2924., 3112.,
      3300., 3488., 3744., 3936., 4128., 4320., 3028., 3224., 3420., 3616.,
      3880., 4080., 4280., 4480., 3132., 3336., 3540., 3744., 4016., 4224.,
      4432., 4640., 3236., 3448., 3660., 3872., 4152., 4368., 4584., 4800.,
      3548., 3784., 4020., 4256., 4560., 4800., 5040., 5280., 3652., 3896.,
      4140., 4384., 4696., 4944., 5192., 5440., 3756., 4008., 4260., 4512.,
      4832., 5088., 5344., 5600., 3860., 4120., 4380., 4640., 4968., 5232.,
      5496., 5760., 3964., 4232., 4500., 4768., 5104., 5376., 5648., 5920.,
      4276., 4568., 4860., 5152., 5512., 5808., 6104., 6400., 4380., 4680.,
      4980., 5280., 5648., 5952., 6256., 6560., 4484., 4792., 5100., 5408.,
      5784., 6096., 6408., 6720., 4588., 4904., 5220., 5536., 5920., 6240.,
      6560., 6880., 4692., 5016., 5340., 5664., 6056., 6384., 6712., 7040.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39885., 41100., 42333., 43584., 41361., 42612., 43881., 45168., 53044.,
      54688., 56356., 58048., 37869., 39084., 40317., 41568., 39201., 40452.,
      41721., 43008., 50524., 52048., 53596., 55168., 52108., 53680., 55276.,
      56896., 66672., 68736., 70832., 72960., 47452., 48976., 50524., 52096.,
      48844., 50416., 52012., 53632., 61612., 63472., 65356., 67264., 63196.,
      65104., 67036., 68992., 80560., 83072., 85616., 88192., 57196., 59056.,
      60940., 62848., 58588., 60496., 62428., 64384., 32793., 34116., 35457.,
      36816., 33693., 35052., 36429., 37824., 42148., 43936., 45748., 47584.,
      29193., 30516., 31857., 33216., 29949., 31308., 32685., 34080., 39093.,
      40668., 42261., 43872., 39993., 41604., 43233., 44880., 49876., 52000.,
      54148., 56320., 34485., 36060., 37653., 39264., 35241., 36852., 38481.,
      40128.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1404., 1568., 1740., 1920., 1516., 1696., 1884., 2080., 1628., 1824.,
      2028., 2240., 1740., 1952., 2172., 2400., 1852., 2080., 2316., 2560.,
      2188., 2464., 2748., 3040., 2300., 2592., 2892., 3200., 2412., 2720.,
      3036., 3360., 2524., 2848., 3180., 3520., 2636., 2976., 3324., 3680.,
      2972., 3360., 3756., 4160., 3084., 3488., 3900., 4320., 3196., 3616.,
      4044., 4480., 3308., 3744., 4188., 4640., 3420., 3872., 4332., 4800.,
      3756., 4256., 4764., 5280., 3868., 4384., 4908., 5440., 3980., 4512.,
      5052., 5600., 4092., 4640., 5196., 5760., 4204., 4768., 5340., 5920.,
      4540., 5152., 5772., 6400., 4652., 5280., 5916., 6560., 4764., 5408.,
      6060., 6720., 4876., 5536., 6204., 6880., 4988., 5664., 6348., 7040.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      78933.,  79770.,  81354.,  82200.,  83811.,  84666.,  86304.,  87168.,
      81849.,  82722.,  84342.,  85224.,  86871.,  87762.,  89436.,  90336.,
      104924., 106088., 108200., 109376., 111524., 112712., 114896., 116096.,
      74865.,  75738.,  77286.,  78168.,  79743.,  80634.,  82236.,  83136.,
      77493.,  78402.,  79986.,  80904.,  82515.,  83442.,  85080.,  86016.,
      99932.,  101048., 102968., 104096., 106052., 107192., 109184., 110336.,
      103052., 104216., 106184., 107360., 109364., 110552., 112592., 113792.,
      131792., 133344., 135904., 137472., 140080., 141664., 144320., 145920.,
      93740.,  94904.,  96776.,  97952.,  99860.,  101048., 102992., 104192.,
      96476.,  97688.,  99608.,  100832., 102788., 104024., 106016., 107264.,
      121772., 123224., 125480., 126944., 129236., 130712., 133040., 134528.,
      124892., 126392., 128696., 130208., 132548., 134072., 136448., 137984.,
      159120., 161120., 164128., 166144., 169200., 171232., 174336., 176384.,
      112892., 114392., 116600., 118112., 120356., 121880., 124160., 125696.,
      115628., 117176., 119432., 120992., 123284., 124856., 127184., 128768.,
      64497.,  65586.,  67134.,  68232.,  69807.,  70914.,  72516.,  73632.,
      66261.,  67386.,  68970.,  70104.,  71715.,  72858.,  74496.,  75648.,
      82796.,  84296.,  86360.,  87872.,  89972.,  91496.,  93632.,  95168.,
      57261.,  58386.,  59898.,  61032.,  62571.,  63714.,  65280.,  66432.,
      58737.,  59898.,  61446.,  62616.,  64191.,  65370.,  66972.,  68160.,
      76845.,  78186.,  79986.,  81336.,  83163.,  84522.,  86376.,  87744.,
      78609.,  79986.,  81822.,  83208.,  85071.,  86466.,  88356.,  89760.,
      97916.,  99752.,  102152., 104000., 106436., 108296., 110768., 112640.,
      67593.,  68970.,  70734.,  72120.,  73911.,  75306.,  77124.,  78528.,
      69069.,  70482.,  72282.,  73704.,  75531.,  76962.,  78816.,  80256.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2676.,  2808.,  3000.,  3136.,  3340.,  3480.,  3696.,  3840.,  2884.,
      3032.,  3240.,  3392.,  3612.,  3768.,  4000.,  4160.,  3092.,  3256.,
      3480.,  3648.,  3884.,  4056.,  4304.,  4480.,  3300.,  3480.,  3720.,
      3904.,  4156.,  4344.,  4608.,  4800.,  3508.,  3704.,  3960.,  4160.,
      4428.,  4632.,  4912.,  5120.,  4132.,  4376.,  4680.,  4928.,  5244.,
      5496.,  5824.,  6080.,  4340.,  4600.,  4920.,  5184.,  5516.,  5784.,
      6128.,  6400.,  4548.,  4824.,  5160.,  5440.,  5788.,  6072.,  6432.,
      6720.,  4756.,  5048.,  5400.,  5696.,  6060.,  6360.,  6736.,  7040.,
      4964.,  5272.,  5640.,  5952.,  6332.,  6648.,  7040.,  7360.,  5588.,
      5944.,  6360.,  6720.,  7148.,  7512.,  7952.,  8320.,  5796.,  6168.,
      6600.,  6976.,  7420.,  7800.,  8256.,  8640.,  6004.,  6392.,  6840.,
      7232.,  7692.,  8088.,  8560.,  8960.,  6212.,  6616.,  7080.,  7488.,
      7964.,  8376.,  8864.,  9280.,  6420.,  6840.,  7320.,  7744.,  8236.,
      8664.,  9168.,  9600.,  7044.,  7512.,  8040.,  8512.,  9052.,  9528.,
      10080., 10560., 7252.,  7736.,  8280.,  8768.,  9324.,  9816.,  10384.,
      10880., 7460.,  7960.,  8520.,  9024.,  9596.,  10104., 10688., 11200.,
      7668.,  8184.,  8760.,  9280.,  9868.,  10392., 10992., 11520., 7876.,
      8408.,  9000.,  9536.,  10140., 10680., 11296., 11840., 8500.,  9080.,
      9720.,  10304., 10956., 11544., 12208., 12800., 8708.,  9304.,  9960.,
      10560., 11228., 11832., 12512., 13120., 8916.,  9528.,  10200., 10816.,
      11500., 12120., 12816., 13440., 9124.,  9752.,  10440., 11072., 11772.,
      12408., 13120., 13760., 9332.,  9976.,  10680., 11328., 12044., 12696.,
      13424., 14080.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      157029., 157866., 158703., 159540., 161862., 162708., 163554., 164400.,
      166767., 167622., 168477., 169332., 171744., 172608., 173472., 174336.,
      162825., 163698., 164571., 165444., 167802., 168684., 169566., 170448.,
      172851., 173742., 174633., 175524., 177972., 178872., 179772., 180672.,
      208684., 209848., 211012., 212176., 215224., 216400., 217576., 218752.,
      221860., 223048., 224236., 225424., 228592., 229792., 230992., 232192.,
      148857., 149730., 150603., 151476., 153690., 154572., 155454., 156336.,
      158595., 159486., 160377., 161268., 163572., 164472., 165372., 166272.,
      154077., 154986., 155895., 156804., 159054., 159972., 160890., 161808.,
      164103., 165030., 165957., 166884., 169224., 170160., 171096., 172032.,
      198748., 199864., 200980., 202096., 204808., 205936., 207064., 208192.,
      210964., 212104., 213244., 214384., 217216., 218368., 219520., 220672.,
      204940., 206104., 207268., 208432., 211192., 212368., 213544., 214720.,
      217540., 218728., 219916., 221104., 223984., 225184., 226384., 227584.,
      262032., 263584., 265136., 266688., 270240., 271808., 273376., 274944.,
      278576., 280160., 281744., 283328., 287040., 288640., 290240., 291840.,
      186316., 187480., 188644., 189808., 192376., 193552., 194728., 195904.,
      198532., 199720., 200908., 202096., 204784., 205984., 207184., 208384.,
      191740., 192952., 194164., 195376., 197992., 199216., 200440., 201664.,
      204340., 205576., 206812., 208048., 210784., 212032., 213280., 214528.,
      242092., 243544., 244996., 246448., 249496., 250960., 252424., 253888.,
      256996., 258472., 259948., 261424., 264592., 266080., 267568., 269056.,
      248284., 249784., 251284., 252784., 255880., 257392., 258904., 260416.,
      263572., 265096., 266620., 268144., 271360., 272896., 274432., 275968.,
      316240., 318240., 320240., 322240., 326240., 328256., 330272., 332288.,
      336368., 338400., 340432., 342464., 346624., 348672., 350720., 352768.,
      224284., 225784., 227284., 228784., 231688., 233200., 234712., 236224.,
      239188., 240712., 242236., 243760., 246784., 248320., 249856., 251392.,
      229708., 231256., 232804., 234352., 237304., 238864., 240424., 241984.,
      244996., 246568., 248140., 249712., 252784., 254368., 255952., 257536.,
      127905., 128994., 130083., 131172., 133170., 134268., 135366., 136464.,
      138507., 139614., 140721., 141828., 143916., 145032., 146148., 147264.,
      131397., 132522., 133647., 134772., 136806., 137940., 139074., 140208.,
      142287., 143430., 144573., 145716., 147840., 148992., 150144., 151296.,
      164092., 165592., 167092., 168592., 171208., 172720., 174232., 175744.,
      178420., 179944., 181468., 182992., 185728., 187264., 188800., 190336.,
      113397., 114522., 115647., 116772., 118662., 119796., 120930., 122064.,
      123999., 125142., 126285., 127428., 129408., 130560., 131712., 132864.,
      116313., 117474., 118635., 119796., 121722., 122892., 124062., 125232.,
      127203., 128382., 129561., 130740., 132756., 133944., 135132., 136320.,
      152349., 153690., 155031., 156372., 158622., 159972., 161322., 162672.,
      164967., 166326., 167685., 169044., 171384., 172752., 174120., 175488.,
      155841., 157218., 158595., 159972., 162258., 163644., 165030., 166416.,
      168747., 170142., 171537., 172932., 175308., 176712., 178116., 179520.,
      193996., 195832., 197668., 199504., 202456., 204304., 206152., 208000.,
      211012., 212872., 214732., 216592., 219664., 221536., 223408., 225280.,
      133809., 135186., 136563., 137940., 140082., 141468., 142854., 144240.,
      146427., 147822., 149217., 150612., 152844., 154248., 155652., 157056.,
      136725., 138138., 139551., 140964., 143142., 144564., 145986., 147408.,
      149631., 151062., 152493., 153924., 156192., 157632., 159072., 160512.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5220.,  5352.,  5484.,  5616.,  5864.,  6000.,  6136.,  6272.,  6540.,
      6680.,  6820.,  6960.,  7248.,  7392.,  7536.,  7680.,  5620.,  5768.,
      5916.,  6064.,  6328.,  6480.,  6632.,  6784.,  7068.,  7224.,  7380.,
      7536.,  7840.,  8000.,  8160.,  8320.,  6020.,  6184.,  6348.,  6512.,
      6792.,  6960.,  7128.,  7296.,  7596.,  7768.,  7940.,  8112.,  8432.,
      8608.,  8784.,  8960.,  6420.,  6600.,  6780.,  6960.,  7256.,  7440.,
      7624.,  7808.,  8124.,  8312.,  8500.,  8688.,  9024.,  9216.,  9408.,
      9600.,  6820.,  7016.,  7212.,  7408.,  7720.,  7920.,  8120.,  8320.,
      8652.,  8856.,  9060.,  9264.,  9616.,  9824.,  10032., 10240., 8020.,
      8264.,  8508.,  8752.,  9112.,  9360.,  9608.,  9856.,  10236., 10488.,
      10740., 10992., 11392., 11648., 11904., 12160., 8420.,  8680.,  8940.,
      9200.,  9576.,  9840.,  10104., 10368., 10764., 11032., 11300., 11568.,
      11984., 12256., 12528., 12800., 8820.,  9096.,  9372.,  9648.,  10040.,
      10320., 10600., 10880., 11292., 11576., 11860., 12144., 12576., 12864.,
      13152., 13440., 9220.,  9512.,  9804.,  10096., 10504., 10800., 11096.,
      11392., 11820., 12120., 12420., 12720., 13168., 13472., 13776., 14080.,
      9620.,  9928.,  10236., 10544., 10968., 11280., 11592., 11904., 12348.,
      12664., 12980., 13296., 13760., 14080., 14400., 14720., 10820., 11176.,
      11532., 11888., 12360., 12720., 13080., 13440., 13932., 14296., 14660.,
      15024., 15536., 15904., 16272., 16640., 11220., 11592., 11964., 12336.,
      12824., 13200., 13576., 13952., 14460., 14840., 15220., 15600., 16128.,
      16512., 16896., 17280., 11620., 12008., 12396., 12784., 13288., 13680.,
      14072., 14464., 14988., 15384., 15780., 16176., 16720., 17120., 17520.,
      17920., 12020., 12424., 12828., 13232., 13752., 14160., 14568., 14976.,
      15516., 15928., 16340., 16752., 17312., 17728., 18144., 18560., 12420.,
      12840., 13260., 13680., 14216., 14640., 15064., 15488., 16044., 16472.,
      16900., 17328., 17904., 18336., 18768., 19200., 13620., 14088., 14556.,
      15024., 15608., 16080., 16552., 17024., 17628., 18104., 18580., 19056.,
      19680., 20160., 20640., 21120., 14020., 14504., 14988., 15472., 16072.,
      16560., 17048., 17536., 18156., 18648., 19140., 19632., 20272., 20768.,
      21264., 21760., 14420., 14920., 15420., 15920., 16536., 17040., 17544.,
      18048., 18684., 19192., 19700., 20208., 20864., 21376., 21888., 22400.,
      14820., 15336., 15852., 16368., 17000., 17520., 18040., 18560., 19212.,
      19736., 20260., 20784., 21456., 21984., 22512., 23040., 15220., 15752.,
      16284., 16816., 17464., 18000., 18536., 19072., 19740., 20280., 20820.,
      21360., 22048., 22592., 23136., 23680., 16420., 17000., 17580., 18160.,
      18856., 19440., 20024., 20608., 21324., 21912., 22500., 23088., 23824.,
      24416., 25008., 25600., 16820., 17416., 18012., 18608., 19320., 19920.,
      20520., 21120., 21852., 22456., 23060., 23664., 24416., 25024., 25632.,
      26240., 17220., 17832., 18444., 19056., 19784., 20400., 21016., 21632.,
      22380., 23000., 23620., 24240., 25008., 25632., 26256., 26880., 17620.,
      18248., 18876., 19504., 20248., 20880., 21512., 22144., 22908., 23544.,
      24180., 24816., 25600., 26240., 26880., 27520., 18020., 18664., 19308.,
      19952., 20712., 21360., 22008., 22656., 23436., 24088., 24740., 25392.,
      26192., 26848., 27504., 28160.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3168., 4070., 4196., 3006., 3096., 4000., 5128., 5264., 3760.,
      3856., 4864., 6216., 6352., 4528., 4624., 2664., 3350., 3428.,
      2394., 2448., 3168., 3974., 4052., 2826., 2880.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      134., 144., 154., 164., 174., 214., 224., 234., 244.,
      254., 294., 304., 314., 324., 334., 374., 384., 394.,
      404., 414., 454., 464., 474., 484., 494.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6084., 6336., 7804.,  8140.,  8044.,  8392.,  5751., 6012., 5922., 6192.,
      7664., 8000., 9808.,  10256., 10064., 10528., 7172., 7520., 7352., 7712.,
      9296., 9728., 11856., 12432., 12112., 12704., 8612., 9056., 8792., 9248.,
      5004., 5328., 6268.,  6700.,  6412.,  6856.,  4455., 4788., 4554., 4896.,
      5940., 6336., 7420.,  7948.,  7564.,  8104.,  5247., 5652., 5346., 5760.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      228., 268., 244., 288., 260., 308., 276., 328., 292., 348.,
      356., 428., 372., 448., 388., 468., 404., 488., 420., 508.,
      484., 588., 500., 608., 516., 628., 532., 648., 548., 668.,
      612., 748., 628., 768., 644., 788., 660., 808., 676., 828.,
      740., 908., 756., 928., 772., 948., 788., 968., 804., 988.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11916., 12168., 12420., 12672., 15272., 15608., 15944., 16280., 15740.,
      16088., 16436., 16784., 11241., 11502., 11763., 12024., 11574., 11844.,
      12114., 12384., 14992., 15328., 15664., 16000., 19168., 19616., 20064.,
      20512., 19664., 20128., 20592., 21056., 13996., 14344., 14692., 15040.,
      14344., 14704., 15064., 15424., 18160., 18592., 19024., 19456., 23136.,
      23712., 24288., 24864., 23632., 24224., 24816., 25408., 16780., 17224.,
      17668., 18112., 17128., 17584., 18040., 18496., 9684.,  10008., 10332.,
      10656., 12104., 12536., 12968., 13400., 12380., 12824., 13268., 13712.,
      8577.,  8910.,  9243.,  9576.,  8766.,  9108.,  9450.,  9792.,  11484.,
      11880., 12276., 12672., 14312., 14840., 15368., 15896., 14588., 15128.,
      15668., 16208., 10089., 10494., 10899., 11304., 10278., 10692., 11106.,
      11520.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      416.,  456.,  496.,  536.,  444.,  488.,  532.,  576.,  472.,  520.,
      568.,  616.,  500.,  552.,  604.,  656.,  528.,  584.,  640.,  696.,
      640.,  712.,  784.,  856.,  668.,  744.,  820.,  896.,  696.,  776.,
      856.,  936.,  724.,  808.,  892.,  976.,  752.,  840.,  928.,  1016.,
      864.,  968.,  1072., 1176., 892.,  1000., 1108., 1216., 920.,  1032.,
      1144., 1256., 948.,  1064., 1180., 1296., 976.,  1096., 1216., 1336.,
      1088., 1224., 1360., 1496., 1116., 1256., 1396., 1536., 1144., 1288.,
      1432., 1576., 1172., 1320., 1468., 1616., 1200., 1352., 1504., 1656.,
      1312., 1480., 1648., 1816., 1340., 1512., 1684., 1856., 1368., 1544.,
      1720., 1896., 1396., 1576., 1756., 1936., 1424., 1608., 1792., 1976.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11979., 12672., 15368., 16280., 15848., 16784., 11331., 12024., 11673.,
      12384., 15124., 16000., 19360., 20512., 19872., 21056., 14164., 15040.,
      14524., 15424., 18388., 19456., 23456., 24864., 23968., 25408., 17044.,
      18112., 17404., 18496., 9891.,  10656., 12392., 13400., 12680., 13712.,
      8811.,  9576.,  9009.,  9792.,  11763., 12672., 14696., 15896., 14984.,
      16208., 10395., 11304., 10593., 11520.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      440.,  536.,  472.,  576.,  504.,  616.,  536.,  656.,  568.,  696.,
      696.,  856.,  728.,  896.,  760.,  936.,  792.,  976.,  824.,  1016.,
      952.,  1176., 984.,  1216., 1016., 1256., 1048., 1296., 1080., 1336.,
      1208., 1496., 1240., 1536., 1272., 1576., 1304., 1616., 1336., 1656.,
      1464., 1816., 1496., 1856., 1528., 1896., 1560., 1936., 1592., 1976.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23463., 23958., 24840., 25344., 30076., 30736., 31888., 32560., 31012.,
      31696., 32872., 33568., 22149., 22662., 23526., 24048., 22815., 23346.,
      24228., 24768., 29588., 30248., 31328., 32000., 37840., 38720., 40128.,
      41024., 38832., 39744., 41184., 42112., 27644., 28328., 29384., 30080.,
      28340., 29048., 30128., 30848., 35924., 36776., 38048., 38912., 45776.,
      46912., 48576., 49728., 46768., 47936., 49632., 50816., 33212., 34088.,
      35336., 36224., 33908., 34808., 36080., 36992., 19143., 19782., 20664.,
      21312., 23932., 24784., 25936., 26800., 24484., 25360., 26536., 27424.,
      16965., 17622., 18486., 19152., 17343., 18018., 18900., 19584., 22743.,
      23526., 24552., 25344., 28348., 29392., 30736., 31792., 28900., 29968.,
      31336., 32416., 19989., 20790., 21798., 22608., 20367., 21186., 22212.,
      23040.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      804.,  880.,  992.,  1072., 860.,  944.,  1064., 1152., 916.,  1008.,
      1136., 1232., 972.,  1072., 1208., 1312., 1028., 1136., 1280., 1392.,
      1252., 1392., 1568., 1712., 1308., 1456., 1640., 1792., 1364., 1520.,
      1712., 1872., 1420., 1584., 1784., 1952., 1476., 1648., 1856., 2032.,
      1700., 1904., 2144., 2352., 1756., 1968., 2216., 2432., 1812., 2032.,
      2288., 2512., 1868., 2096., 2360., 2592., 1924., 2160., 2432., 2672.,
      2148., 2416., 2720., 2992., 2204., 2480., 2792., 3072., 2260., 2544.,
      2864., 3152., 2316., 2608., 2936., 3232., 2372., 2672., 3008., 3312.,
      2596., 2928., 3296., 3632., 2652., 2992., 3368., 3712., 2708., 3056.,
      3440., 3792., 2764., 3120., 3512., 3872., 2820., 3184., 3584., 3952.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46431., 46926., 47421., 47916.,  49176.,  49680., 50184., 50688., 59492.,
      60152., 60812., 61472., 63104.,  63776.,  64448., 65120., 61340., 62024.,
      62708., 63392., 65048., 65744.,  66440.,  67136., 43785., 44298., 44811.,
      45324., 46530., 47052., 47574.,  48096.,  45099., 45630., 46161., 46692.,
      47916., 48456., 48996., 49536.,  58516.,  59176., 59836., 60496., 61984.,
      62656., 63328., 64000., 74800.,  75680.,  76560., 77440., 79360., 80256.,
      81152., 82048., 76752., 77664.,  78576.,  79488., 81440., 82368., 83296.,
      84224., 54604., 55288., 55972.,  56656.,  58072., 58768., 59464., 60160.,
      55972., 56680., 57388., 58096.,  59536.,  60256., 60976., 61696., 70996.,
      71848., 72700., 73552., 75232.,  76096.,  76960., 77824., 90416., 91552.,
      92688., 93824., 96000., 97152.,  98304.,  99456., 92368., 93536., 94704.,
      95872., 98080., 99264., 100448., 101632., 65548., 66424., 67300., 68176.,
      69784., 70672., 71560., 72448.,  66916.,  67816., 68716., 69616., 71248.,
      72160., 73072., 73984., 37647.,  38286.,  38925., 39564., 40680., 41328.,
      41976., 42624., 47012., 47864.,  48716.,  49568., 51008., 51872., 52736.,
      53600., 48092., 48968., 49844.,  50720.,  52184., 53072., 53960., 54848.,
      33273., 33930., 34587., 35244.,  36306.,  36972., 37638., 38304., 34011.,
      34686., 35361., 36036., 37116.,  37800.,  38484., 39168., 44703., 45486.,
      46269., 47052., 48312., 49104.,  49896.,  50688., 55652., 56696., 57740.,
      58784., 60416., 61472., 62528.,  63584.,  56732., 57800., 58868., 59936.,
      61592., 62672., 63752., 64832.,  39177.,  39978., 40779., 41580., 42786.,
      43596., 44406., 45216., 39915.,  40734.,  41553., 42372., 43596., 44424.,
      45252., 46080.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1532., 1608., 1684., 1760., 1904., 1984., 2064., 2144., 1636., 1720.,
      1804., 1888., 2040., 2128., 2216., 2304., 1740., 1832., 1924., 2016.,
      2176., 2272., 2368., 2464., 1844., 1944., 2044., 2144., 2312., 2416.,
      2520., 2624., 1948., 2056., 2164., 2272., 2448., 2560., 2672., 2784.,
      2364., 2504., 2644., 2784., 2992., 3136., 3280., 3424., 2468., 2616.,
      2764., 2912., 3128., 3280., 3432., 3584., 2572., 2728., 2884., 3040.,
      3264., 3424., 3584., 3744., 2676., 2840., 3004., 3168., 3400., 3568.,
      3736., 3904., 2780., 2952., 3124., 3296., 3536., 3712., 3888., 4064.,
      3196., 3400., 3604., 3808., 4080., 4288., 4496., 4704., 3300., 3512.,
      3724., 3936., 4216., 4432., 4648., 4864., 3404., 3624., 3844., 4064.,
      4352., 4576., 4800., 5024., 3508., 3736., 3964., 4192., 4488., 4720.,
      4952., 5184., 3612., 3848., 4084., 4320., 4624., 4864., 5104., 5344.,
      4028., 4296., 4564., 4832., 5168., 5440., 5712., 5984., 4132., 4408.,
      4684., 4960., 5304., 5584., 5864., 6144., 4236., 4520., 4804., 5088.,
      5440., 5728., 6016., 6304., 4340., 4632., 4924., 5216., 5576., 5872.,
      6168., 6464., 4444., 4744., 5044., 5344., 5712., 6016., 6320., 6624.,
      4860., 5192., 5524., 5856., 6256., 6592., 6928., 7264., 4964., 5304.,
      5644., 5984., 6392., 6736., 7080., 7424., 5068., 5416., 5764., 6112.,
      6528., 6880., 7232., 7584., 5172., 5528., 5884., 6240., 6664., 7024.,
      7384., 7744., 5276., 5640., 6004., 6368., 6800., 7168., 7536., 7904.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46557., 47916., 49293., 50688., 59684., 61472., 63284.,  65120., 61556.,
      63392., 65252., 67136., 43965., 45324., 46701., 48096.,  45297., 46692.,
      48105., 49536., 58780., 60496., 62236., 64000., 75184.,  77440., 79728.,
      82048., 77168., 79488., 81840., 84224., 54940., 56656.,  58396., 60160.,
      56332., 58096., 59884., 61696., 71452., 73552., 75676.,  77824., 91056.,
      93824., 96624., 99456., 93040., 95872., 98736., 101632., 66076., 68176.,
      70300., 72448., 67468., 69616., 71788., 73984., 38061.,  39564., 41085.,
      42624., 47588., 49568., 51572., 53600., 48692., 50720.,  52772., 54848.,
      33741., 35244., 36765., 38304., 34497., 36036., 37593.,  39168., 45261.,
      47052., 48861., 50688., 56420., 58784., 61172., 63584.,  57524., 59936.,
      62372., 64832., 39789., 41580., 43389., 45216., 40545.,  42372., 44217.,
      46080.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1580., 1760., 1948., 2144., 1692., 1888., 2092., 2304., 1804., 2016.,
      2236., 2464., 1916., 2144., 2380., 2624., 2028., 2272., 2524., 2784.,
      2476., 2784., 3100., 3424., 2588., 2912., 3244., 3584., 2700., 3040.,
      3388., 3744., 2812., 3168., 3532., 3904., 2924., 3296., 3676., 4064.,
      3372., 3808., 4252., 4704., 3484., 3936., 4396., 4864., 3596., 4064.,
      4540., 5024., 3708., 4192., 4684., 5184., 3820., 4320., 4828., 5344.,
      4268., 4832., 5404., 5984., 4380., 4960., 5548., 6144., 4492., 5088.,
      5692., 6304., 4604., 5216., 5836., 6464., 4716., 5344., 5980., 6624.,
      5164., 5856., 6556., 7264., 5276., 5984., 6700., 7424., 5388., 6112.,
      6844., 7584., 5500., 6240., 6988., 7744., 5612., 6368., 7132., 7904.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      92133.,  93114.,  94842.,  95832.,  97587.,  98586.,  100368., 101376.,
      118060., 119368., 121624., 122944., 125236., 126568., 128896., 130240.,
      121756., 123112., 125416., 126784., 129124., 130504., 132880., 134272.,
      86913.,  87930.,  89622.,  90648.,  92367.,  93402.,  95148.,  96192.,
      89541.,  90594.,  92322.,  93384.,  95139.,  96210.,  97992.,  99072.,
      116252., 117560., 119672., 120992., 123140., 124472., 126656., 128000.,
      148624., 150368., 153120., 154880., 157680., 159456., 162304., 164096.,
      152528., 154336., 157152., 158976., 161840., 163680., 166592., 168448.,
      108524., 109880., 111944., 113312., 115412., 116792., 118928., 120320.,
      111260., 112664., 114776., 116192., 118340., 119768., 121952., 123392.,
      141212., 142904., 145400., 147104., 149636., 151352., 153920., 155648.,
      179856., 182112., 185376., 187648., 190960., 193248., 196608., 198912.,
      183760., 186080., 189408., 191744., 195120., 197472., 200896., 203264.,
      130412., 132152., 134600., 136352., 138836., 140600., 143120., 144896.,
      133148., 134936., 137432., 139232., 141764., 143576., 146144., 147968.,
      74853.,  76122.,  77850.,  79128.,  80883.,  82170.,  83952.,  85248.,
      93484.,  95176.,  97432.,  99136.,  101428., 103144., 105472., 107200.,
      95644.,  97384.,  99688.,  101440., 103780., 105544., 107920., 109696.,
      66177.,  67482.,  69174.,  70488.,  72207.,  73530.,  75276.,  76608.,
      67653.,  68994.,  70722.,  72072.,  73827.,  75186.,  76968.,  78336.,
      88965.,  90522.,  92538.,  94104.,  96147.,  97722.,  99792.,  101376.,
      110764., 112840., 115480., 117568., 120244., 122344., 125056., 127168.,
      112924., 115048., 117736., 119872., 122596., 124744., 127504., 129664.,
      77985.,  79578.,  81558.,  83160.,  85167.,  86778.,  88812.,  90432.,
      79461.,  81090.,  83106.,  84744.,  86787.,  88434.,  90504.,  92160.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3012.,  3160.,  3368.,  3520.,  3740.,  3896.,  4128.,  4288.,  3220.,
      3384.,  3608.,  3776.,  4012.,  4184.,  4432.,  4608.,  3428.,  3608.,
      3848.,  4032.,  4284.,  4472.,  4736.,  4928.,  3636.,  3832.,  4088.,
      4288.,  4556.,  4760.,  5040.,  5248.,  3844.,  4056.,  4328.,  4544.,
      4828.,  5048.,  5344.,  5568.,  4676.,  4952.,  5288.,  5568.,  5916.,
      6200.,  6560.,  6848.,  4884.,  5176.,  5528.,  5824.,  6188.,  6488.,
      6864.,  7168.,  5092.,  5400.,  5768.,  6080.,  6460.,  6776.,  7168.,
      7488.,  5300.,  5624.,  6008.,  6336.,  6732.,  7064.,  7472.,  7808.,
      5508.,  5848.,  6248.,  6592.,  7004.,  7352.,  7776.,  8128.,  6340.,
      6744.,  7208.,  7616.,  8092.,  8504.,  8992.,  9408.,  6548.,  6968.,
      7448.,  7872.,  8364.,  8792.,  9296.,  9728.,  6756.,  7192.,  7688.,
      8128.,  8636.,  9080.,  9600.,  10048., 6964.,  7416.,  7928.,  8384.,
      8908.,  9368.,  9904.,  10368., 7172.,  7640.,  8168.,  8640.,  9180.,
      9656.,  10208., 10688., 8004.,  8536.,  9128.,  9664.,  10268., 10808.,
      11424., 11968., 8212.,  8760.,  9368.,  9920.,  10540., 11096., 11728.,
      12288., 8420.,  8984.,  9608.,  10176., 10812., 11384., 12032., 12608.,
      8628.,  9208.,  9848.,  10432., 11084., 11672., 12336., 12928., 8836.,
      9432.,  10088., 10688., 11356., 11960., 12640., 13248., 9668.,  10328.,
      11048., 11712., 12444., 13112., 13856., 14528., 9876.,  10552., 11288.,
      11968., 12716., 13400., 14160., 14848., 10084., 10776., 11528., 12224.,
      12988., 13688., 14464., 15168., 10292., 11000., 11768., 12480., 13260.,
      13976., 14768., 15488., 10500., 11224., 12008., 12736., 13532., 14264.,
      15072., 15808.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      183285., 184266., 185247., 186228., 188694., 189684., 190674., 191664.,
      194175., 195174., 196173., 197172., 199728., 200736., 201744., 202752.,
      234812., 236120., 237428., 238736., 241928., 243248., 244568., 245888.,
      249140., 250472., 251804., 253136., 256448., 257792., 259136., 260480.,
      242156., 243512., 244868., 246224., 249464., 250832., 252200., 253568.,
      256868., 258248., 259628., 261008., 264368., 265760., 267152., 268544.,
      172809., 173826., 174843., 175860., 178218., 179244., 180270., 181296.,
      183699., 184734., 185769., 186804., 189252., 190296., 191340., 192384.,
      178029., 179082., 180135., 181188., 183582., 184644., 185706., 186768.,
      189207., 190278., 191349., 192420., 194904., 195984., 197064., 198144.,
      231196., 232504., 233812., 235120., 238024., 239344., 240664., 241984.,
      244948., 246280., 247612., 248944., 251968., 253312., 254656., 256000.,
      295504., 297248., 298992., 300736., 304480., 306240., 308000., 309760.,
      313584., 315360., 317136., 318912., 322816., 324608., 326400., 328192.,
      303248., 305056., 306864., 308672., 312480., 314304., 316128., 317952.,
      321840., 323680., 325520., 327360., 331328., 333184., 335040., 336896.,
      215692., 217048., 218404., 219760., 222520., 223888., 225256., 226624.,
      229444., 230824., 232204., 233584., 236464., 237856., 239248., 240640.,
      221116., 222520., 223924., 225328., 228136., 229552., 230968., 232384.,
      235252., 236680., 238108., 239536., 242464., 243904., 245344., 246784.,
      280732., 282424., 284116., 285808., 289096., 290800., 292504., 294208.,
      297556., 299272., 300988., 302704., 306112., 307840., 309568., 311296.,
      357456., 359712., 361968., 364224., 368480., 370752., 373024., 375296.,
      379632., 381920., 384208., 386496., 390912., 393216., 395520., 397824.,
      365200., 367520., 369840., 372160., 376480., 378816., 381152., 383488.,
      387888., 390240., 392592., 394944., 399424., 401792., 404160., 406528.,
      259084., 260824., 262564., 264304., 267448., 269200., 270952., 272704.,
      275908., 277672., 279436., 281200., 284464., 286240., 288016., 289792.,
      264508., 266296., 268084., 269872., 273064., 274864., 276664., 278464.,
      281716., 283528., 285340., 287152., 290464., 292288., 294112., 295936.,
      148437., 149706., 150975., 152244., 154422., 155700., 156978., 158256.,
      160479., 161766., 163053., 164340., 166608., 167904., 169200., 170496.,
      185276., 186968., 188660., 190352., 193160., 194864., 196568., 198272.,
      201140., 202856., 204572., 206288., 209216., 210944., 212672., 214400.,
      189548., 191288., 193028., 194768., 197624., 199376., 201128., 202880.,
      205796., 207560., 209324., 211088., 214064., 215840., 217616., 219392.,
      131049., 132354., 133659., 134964., 137034., 138348., 139662., 140976.,
      143091., 144414., 145737., 147060., 149220., 150552., 151884., 153216.,
      133965., 135306., 136647., 137988., 140094., 141444., 142794., 144144.,
      146295., 147654., 149013., 150372., 152568., 153936., 155304., 156672.,
      176373., 177930., 179487., 181044., 183510., 185076., 186642., 188208.,
      190719., 192294., 193869., 195444., 198000., 199584., 201168., 202752.,
      219452., 221528., 223604., 225680., 228872., 230960., 233048., 235136.,
      238388., 240488., 242588., 244688., 248000., 250112., 252224., 254336.,
      223724., 225848., 227972., 230096., 233336., 235472., 237608., 239744.,
      243044., 245192., 247340., 249488., 252848., 255008., 257168., 259328.,
      154377., 155970., 157563., 159156., 161514., 163116., 164718., 166320.,
      168723., 170334., 171945., 173556., 176004., 177624., 179244., 180864.,
      157293., 158922., 160551., 162180., 164574., 166212., 167850., 169488.,
      171927., 173574., 175221., 176868., 179352., 181008., 182664., 184320.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5876.,  6024.,  6172.,  6320.,  6584.,  6736.,  6888.,  7040.,  7324.,
      7480.,  7636.,  7792.,  8096.,  8256.,  8416.,  8576.,  6276.,  6440.,
      6604.,  6768.,  7048.,  7216.,  7384.,  7552.,  7852.,  8024.,  8196.,
      8368.,  8688.,  8864.,  9040.,  9216.,  6676.,  6856.,  7036.,  7216.,
      7512.,  7696.,  7880.,  8064.,  8380.,  8568.,  8756.,  8944.,  9280.,
      9472.,  9664.,  9856.,  7076.,  7272.,  7468.,  7664.,  7976.,  8176.,
      8376.,  8576.,  8908.,  9112.,  9316.,  9520.,  9872.,  10080., 10288.,
      10496., 7476.,  7688.,  7900.,  8112.,  8440.,  8656.,  8872.,  9088.,
      9436.,  9656.,  9876.,  10096., 10464., 10688., 10912., 11136., 9076.,
      9352.,  9628.,  9904.,  10296., 10576., 10856., 11136., 11548., 11832.,
      12116., 12400., 12832., 13120., 13408., 13696., 9476.,  9768.,  10060.,
      10352., 10760., 11056., 11352., 11648., 12076., 12376., 12676., 12976.,
      13424., 13728., 14032., 14336., 9876.,  10184., 10492., 10800., 11224.,
      11536., 11848., 12160., 12604., 12920., 13236., 13552., 14016., 14336.,
      14656., 14976., 10276., 10600., 10924., 11248., 11688., 12016., 12344.,
      12672., 13132., 13464., 13796., 14128., 14608., 14944., 15280., 15616.,
      10676., 11016., 11356., 11696., 12152., 12496., 12840., 13184., 13660.,
      14008., 14356., 14704., 15200., 15552., 15904., 16256., 12276., 12680.,
      13084., 13488., 14008., 14416., 14824., 15232., 15772., 16184., 16596.,
      17008., 17568., 17984., 18400., 18816., 12676., 13096., 13516., 13936.,
      14472., 14896., 15320., 15744., 16300., 16728., 17156., 17584., 18160.,
      18592., 19024., 19456., 13076., 13512., 13948., 14384., 14936., 15376.,
      15816., 16256., 16828., 17272., 17716., 18160., 18752., 19200., 19648.,
      20096., 13476., 13928., 14380., 14832., 15400., 15856., 16312., 16768.,
      17356., 17816., 18276., 18736., 19344., 19808., 20272., 20736., 13876.,
      14344., 14812., 15280., 15864., 16336., 16808., 17280., 17884., 18360.,
      18836., 19312., 19936., 20416., 20896., 21376., 15476., 16008., 16540.,
      17072., 17720., 18256., 18792., 19328., 19996., 20536., 21076., 21616.,
      22304., 22848., 23392., 23936., 15876., 16424., 16972., 17520., 18184.,
      18736., 19288., 19840., 20524., 21080., 21636., 22192., 22896., 23456.,
      24016., 24576., 16276., 16840., 17404., 17968., 18648., 19216., 19784.,
      20352., 21052., 21624., 22196., 22768., 23488., 24064., 24640., 25216.,
      16676., 17256., 17836., 18416., 19112., 19696., 20280., 20864., 21580.,
      22168., 22756., 23344., 24080., 24672., 25264., 25856., 17076., 17672.,
      18268., 18864., 19576., 20176., 20776., 21376., 22108., 22712., 23316.,
      23920., 24672., 25280., 25888., 26496., 18676., 19336., 19996., 20656.,
      21432., 22096., 22760., 23424., 24220., 24888., 25556., 26224., 27040.,
      27712., 28384., 29056., 19076., 19752., 20428., 21104., 21896., 22576.,
      23256., 23936., 24748., 25432., 26116., 26800., 27632., 28320., 29008.,
      29696., 19476., 20168., 20860., 21552., 22360., 23056., 23752., 24448.,
      25276., 25976., 26676., 27376., 28224., 28928., 29632., 30336., 19876.,
      20584., 21292., 22000., 22824., 23536., 24248., 24960., 25804., 26520.,
      27236., 27952., 28816., 29536., 30256., 30976., 20276., 21000., 21724.,
      22448., 23288., 24016., 24744., 25472., 26332., 27064., 27796., 28528.,
      29408., 30144., 30880., 31616.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6500., 7885., 8080.,  6230.,  6380., 8200., 9930., 10140., 7800.,
      7960., 9960., 12030., 12240., 9400., 9560., 5420., 6460.,  6580.,
      4970., 5060., 6440.,  7660.,  7780., 5870., 5960.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371.,  392.,  413.,  434.,  455.,  581.,  602.,  623.,  644.,
      665.,  791.,  812.,  833.,  854.,  875.,  1001., 1022., 1043.,
      1064., 1085., 1211., 1232., 1253., 1274., 1295.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12580., 13000., 15245., 15770., 15620., 16160., 12028., 12460., 12316.,
      12760., 15840., 16400., 19160., 19860., 19560., 20280., 15024., 15600.,
      15328., 15920., 19200., 19920., 23160., 24060., 23560., 24480., 18064.,
      18800., 18368., 19120., 10300., 10840., 12245., 12920., 12470., 13160.,
      9388.,  9940.,  9556.,  10120., 12220., 12880., 14495., 15320., 14720.,
      15560., 11068., 11740., 11236., 11920.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      664.,  742.,  700.,  784.,  736.,  826.,  772.,  868.,  808.,  910.,
      1024., 1162., 1060., 1204., 1096., 1246., 1132., 1288., 1168., 1330.,
      1384., 1582., 1420., 1624., 1456., 1666., 1492., 1708., 1528., 1750.,
      1744., 2002., 1780., 2044., 1816., 2086., 1852., 2128., 1888., 2170.,
      2104., 2422., 2140., 2464., 2176., 2506., 2212., 2548., 2248., 2590.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24740., 25160., 25580., 26000., 29965., 30490., 31015., 31540., 30700.,
      31240., 31780., 32320., 23624., 24056., 24488., 24920., 24188., 24632.,
      25076., 25520., 31120., 31680., 32240., 32800., 37620., 38320., 39020.,
      39720., 38400., 39120., 39840., 40560., 29472., 30048., 30624., 31200.,
      30064., 30656., 31248., 31840., 37680., 38400., 39120., 39840., 45420.,
      46320., 47220., 48120., 46200., 47120., 48040., 48960., 35392., 36128.,
      36864., 37600., 35984., 36736., 37488., 38240., 20060., 20600., 21140.,
      21680., 23815., 24490., 25165., 25840., 24250., 24940., 25630., 26320.,
      18224., 18776., 19328., 19880., 18548., 19112., 19676., 20240., 23780.,
      24440., 25100., 25760., 28165., 28990., 29815., 30640., 28600., 29440.,
      30280., 31120., 21464., 22136., 22808., 23480., 21788., 22472., 23156.,
      23840.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1250., 1328., 1406., 1484., 1316., 1400., 1484., 1568., 1382., 1472.,
      1562., 1652., 1448., 1544., 1640., 1736., 1514., 1616., 1718., 1820.,
      1910., 2048., 2186., 2324., 1976., 2120., 2264., 2408., 2042., 2192.,
      2342., 2492., 2108., 2264., 2420., 2576., 2174., 2336., 2498., 2660.,
      2570., 2768., 2966., 3164., 2636., 2840., 3044., 3248., 2702., 2912.,
      3122., 3332., 2768., 2984., 3200., 3416., 2834., 3056., 3278., 3500.,
      3230., 3488., 3746., 4004., 3296., 3560., 3824., 4088., 3362., 3632.,
      3902., 4172., 3428., 3704., 3980., 4256., 3494., 3776., 4058., 4340.,
      3890., 4208., 4526., 4844., 3956., 4280., 4604., 4928., 4022., 4352.,
      4682., 5012., 4088., 4424., 4760., 5096., 4154., 4496., 4838., 5180.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24848., 26000., 30115., 31540., 30865., 32320., 23768., 24920., 24344.,
      25520., 31344., 32800., 37920., 39720., 38720., 40560., 29744., 31200.,
      30352., 31840., 38064., 39840., 45920., 48120., 46720., 48960., 35824.,
      37600., 36432., 38240., 20408., 21680., 24265., 25840., 24715., 26320.,
      18608., 19880., 18944., 20240., 24248., 25760., 28765., 30640., 29215.,
      31120., 21968., 23480., 22304., 23840.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1292., 1484., 1364., 1568., 1436., 1652., 1508., 1736., 1580., 1820.,
      2012., 2324., 2084., 2408., 2156., 2492., 2228., 2576., 2300., 2660.,
      2732., 3164., 2804., 3248., 2876., 3332., 2948., 3416., 3020., 3500.,
      3452., 4004., 3524., 4088., 3596., 4172., 3668., 4256., 3740., 4340.,
      4172., 4844., 4244., 4928., 4316., 5012., 4388., 5096., 4460., 5180.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      48868., 49696., 51160., 52000., 59195., 60230., 62030., 63080., 60665.,
      61730., 63560., 64640., 46684., 47536., 48976., 49840., 47812., 48688.,
      50152., 51040., 61584., 62688., 64480., 65600., 74460., 75840., 78040.,
      79440., 76020., 77440., 79680., 81120., 58352., 59488., 61248., 62400.,
      59536., 60704., 62496., 63680., 74704., 76128., 78240., 79680., 90060.,
      91840., 94440., 96240., 91620., 93440., 96080., 97920., 70192., 71648.,
      73728., 75200., 71376., 72864., 74976., 76480., 39748., 40816., 42280.,
      43360., 47195., 48530., 50330., 51680., 48065., 49430., 51260., 52640.,
      36124., 37216., 38656., 39760., 36772., 37888., 39352., 40480., 47188.,
      48496., 50200., 51520., 55895., 57530., 59630., 61280., 56765., 58430.,
      60560., 62240., 42604., 43936., 45616., 46960., 43252., 44608., 46312.,
      47680.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2434., 2584.,  2812., 2968., 2566., 2728.,  2968., 3136., 2698., 2872.,
      3124., 3304.,  2830., 3016., 3280., 3472.,  2962., 3160., 3436., 3640.,
      3754., 4024.,  4372., 4648., 3886., 4168.,  4528., 4816., 4018., 4312.,
      4684., 4984.,  4150., 4456., 4840., 5152.,  4282., 4600., 4996., 5320.,
      5074., 5464.,  5932., 6328., 5206., 5608.,  6088., 6496., 5338., 5752.,
      6244., 6664.,  5470., 5896., 6400., 6832.,  5602., 6040., 6556., 7000.,
      6394., 6904.,  7492., 8008., 6526., 7048.,  7648., 8176., 6658., 7192.,
      7804., 8344.,  6790., 7336., 7960., 8512.,  6922., 7480., 8116., 8680.,
      7714., 8344.,  9052., 9688., 7846., 8488.,  9208., 9856., 7978., 8632.,
      9364., 10024., 8110., 8776., 9520., 10192., 8242., 8920., 9676., 10360.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      96908.,  97736.,  98564.,  99392.,  101480., 102320., 103160., 104000.,
      117355., 118390., 119425., 120460., 123010., 124060., 125110., 126160.,
      120265., 121330., 122395., 123460., 126040., 127120., 128200., 129280.,
      92516.,  93368.,  94220.,  95072.,  97088.,  97952.,  98816.,  99680.,
      94748.,  95624.,  96500.,  97376.,  99416.,  100304., 101192., 102080.,
      122064., 123168., 124272., 125376., 127840., 128960., 130080., 131200.,
      147540., 148920., 150300., 151680., 154680., 156080., 157480., 158880.,
      150620., 152040., 153460., 154880., 157920., 159360., 160800., 162240.,
      115568., 116704., 117840., 118976., 121344., 122496., 123648., 124800.,
      117904., 119072., 120240., 121408., 123808., 124992., 126176., 127360.,
      147984., 149408., 150832., 152256., 155040., 156480., 157920., 159360.,
      178340., 180120., 181900., 183680., 187080., 188880., 190680., 192480.,
      181420., 183240., 185060., 186880., 190320., 192160., 194000., 195840.,
      138928., 140384., 141840., 143296., 145984., 147456., 148928., 150400.,
      141264., 142752., 144240., 145728., 148448., 149952., 151456., 152960.,
      78428.,  79496.,  80564.,  81632.,  83480.,  84560.,  85640.,  86720.,
      93055.,  94390.,  95725.,  97060.,  99310.,  100660., 102010., 103360.,
      94765.,  96130.,  97495.,  98860.,  101140., 102520., 103900., 105280.,
      71156.,  72248.,  73340.,  74432.,  76208.,  77312.,  78416.,  79520.,
      72428.,  73544.,  74660.,  75776.,  77576.,  78704.,  79832.,  80960.,
      93068.,  94376.,  95684.,  96992.,  99080.,  100400., 101720., 103040.,
      110155., 111790., 113425., 115060., 117610., 119260., 120910., 122560.,
      111865., 113530., 115195., 116860., 119440., 121120., 122800., 124480.,
      83876.,  85208.,  86540.,  87872.,  89888.,  91232.,  92576.,  93920.,
      85148.,  86504.,  87860.,  89216.,  91256.,  92624.,  93992.,  95360.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4718.,  4868.,  5018.,  5168.,  5468.,  5624.,  5780.,  5936.,  4970.,
      5132.,  5294.,  5456.,  5768.,  5936.,  6104.,  6272.,  5222.,  5396.,
      5570.,  5744.,  6068.,  6248.,  6428.,  6608.,  5474.,  5660.,  5846.,
      6032.,  6368.,  6560.,  6752.,  6944.,  5726.,  5924.,  6122.,  6320.,
      6668.,  6872.,  7076.,  7280.,  7238.,  7508.,  7778.,  8048.,  8468.,
      8744.,  9020.,  9296.,  7490.,  7772.,  8054.,  8336.,  8768.,  9056.,
      9344.,  9632.,  7742.,  8036.,  8330.,  8624.,  9068.,  9368.,  9668.,
      9968.,  7994.,  8300.,  8606.,  8912.,  9368.,  9680.,  9992.,  10304.,
      8246.,  8564.,  8882.,  9200.,  9668.,  9992.,  10316., 10640., 9758.,
      10148., 10538., 10928., 11468., 11864., 12260., 12656., 10010., 10412.,
      10814., 11216., 11768., 12176., 12584., 12992., 10262., 10676., 11090.,
      11504., 12068., 12488., 12908., 13328., 10514., 10940., 11366., 11792.,
      12368., 12800., 13232., 13664., 10766., 11204., 11642., 12080., 12668.,
      13112., 13556., 14000., 12278., 12788., 13298., 13808., 14468., 14984.,
      15500., 16016., 12530., 13052., 13574., 14096., 14768., 15296., 15824.,
      16352., 12782., 13316., 13850., 14384., 15068., 15608., 16148., 16688.,
      13034., 13580., 14126., 14672., 15368., 15920., 16472., 17024., 13286.,
      13844., 14402., 14960., 15668., 16232., 16796., 17360., 14798., 15428.,
      16058., 16688., 17468., 18104., 18740., 19376., 15050., 15692., 16334.,
      16976., 17768., 18416., 19064., 19712., 15302., 15956., 16610., 17264.,
      18068., 18728., 19388., 20048., 15554., 16220., 16886., 17552., 18368.,
      19040., 19712., 20384., 15806., 16484., 17162., 17840., 18668., 19352.,
      20036., 20720.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      97124.,  99392.,  101684., 104000., 117655., 120460., 123295., 126160.,
      120595., 123460., 126355., 129280., 92804.,  95072.,  97364.,  99680.,
      95060.,  97376.,  99716.,  102080., 122512., 125376., 128272., 131200.,
      148140., 151680., 155260., 158880., 151260., 154880., 158540., 162240.,
      116112., 118976., 121872., 124800., 118480., 121408., 124368., 127360.,
      148752., 152256., 155792., 159360., 179340., 183680., 188060., 192480.,
      182460., 186880., 191340., 195840., 139792., 143296., 146832., 150400.,
      142160., 145728., 149328., 152960., 79124.,  81632.,  84164.,  86720.,
      93955.,  97060.,  100195., 103360., 95695.,  98860.,  102055., 105280.,
      71924.,  74432.,  76964.,  79520.,  73220.,  75776.,  78356.,  80960.,
      94004.,  96992.,  100004., 103040., 111355., 115060., 118795., 122560.,
      113095., 116860., 120655., 124480., 84884.,  87872.,  90884.,  93920.,
      86180.,  89216.,  92276.,  95360.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4802.,  5168.,  5546.,  5936.,  5066.,  5456.,  5858.,  6272.,  5330.,
      5744.,  6170.,  6608.,  5594.,  6032.,  6482.,  6944.,  5858.,  6320.,
      6794.,  7280.,  7442.,  8048.,  8666.,  9296.,  7706.,  8336.,  8978.,
      9632.,  7970.,  8624.,  9290.,  9968.,  8234.,  8912.,  9602.,  10304.,
      8498.,  9200.,  9914.,  10640., 10082., 10928., 11786., 12656., 10346.,
      11216., 12098., 12992., 10610., 11504., 12410., 13328., 10874., 11792.,
      12722., 13664., 11138., 12080., 13034., 14000., 12722., 13808., 14906.,
      16016., 12986., 14096., 15218., 16352., 13250., 14384., 15530., 16688.,
      13514., 14672., 15842., 17024., 13778., 14960., 16154., 17360., 15362.,
      16688., 18026., 19376., 15626., 16976., 18338., 19712., 15890., 17264.,
      18650., 20048., 16154., 17552., 18962., 20384., 16418., 17840., 19274.,
      20720.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      192604., 194248., 197128., 198784., 201700., 203368., 206320., 208000.,
      233255., 235310., 238850., 240920., 244505., 246590., 250220., 252320.,
      239075., 241190., 244790., 246920., 250565., 252710., 256400., 258560.,
      183916., 185608., 188440., 190144., 193012., 194728., 197632., 199360.,
      188380., 190120., 193000., 194752., 197668., 199432., 202384., 204160.,
      242832., 245024., 248544., 250752., 254320., 256544., 260160., 262400.,
      293540., 296280., 300600., 303360., 307740., 310520., 314960., 317760.,
      299700., 302520., 306920., 309760., 314220., 317080., 321600., 324480.,
      229968., 232224., 235680., 237952., 241456., 243744., 247296., 249600.,
      234640., 236960., 240480., 242816., 246384., 248736., 252352., 254720.,
      294672., 297504., 301664., 304512., 308720., 311584., 315840., 318720.,
      355140., 358680., 363800., 367360., 372540., 376120., 381360., 384960.,
      361300., 364920., 370120., 373760., 379020., 382680., 388000., 391680.,
      276688., 279584., 283680., 286592., 290736., 293664., 297856., 300800.,
      281360., 284320., 288480., 291456., 295664., 298656., 302912., 305920.,
      156124., 158248., 161128., 163264., 166180., 168328., 171280., 173440.,
      185255., 187910., 191450., 194120., 197705., 200390., 204020., 206720.,
      188675., 191390., 194990., 197720., 201365., 204110., 207800., 210560.,
      141676., 143848., 146680., 148864., 151732., 153928., 156832., 159040.,
      144220., 146440., 149320., 151552., 154468., 156712., 159664., 161920.,
      185404., 188008., 191368., 193984., 197380., 200008., 203440., 206080.,
      219455., 222710., 226850., 230120., 234305., 237590., 241820., 245120.,
      222875., 226190., 230390., 233720., 237965., 241310., 245600., 248960.,
      167116., 169768., 173080., 175744., 179092., 181768., 185152., 187840.,
      169660., 172360., 175720., 178432., 181828., 184552., 187984., 190720.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9310.,  9604.,  10036., 10336., 10786., 11092., 11560., 11872., 9814.,
      10132., 10588., 10912., 11386., 11716., 12208., 12544., 10318., 10660.,
      11140., 11488., 11986., 12340., 12856., 13216., 10822., 11188., 11692.,
      12064., 12586., 12964., 13504., 13888., 11326., 11716., 12244., 12640.,
      13186., 13588., 14152., 14560., 14350., 14884., 15556., 16096., 16786.,
      17332., 18040., 18592., 14854., 15412., 16108., 16672., 17386., 17956.,
      18688., 19264., 15358., 15940., 16660., 17248., 17986., 18580., 19336.,
      19936., 15862., 16468., 17212., 17824., 18586., 19204., 19984., 20608.,
      16366., 16996., 17764., 18400., 19186., 19828., 20632., 21280., 19390.,
      20164., 21076., 21856., 22786., 23572., 24520., 25312., 19894., 20692.,
      21628., 22432., 23386., 24196., 25168., 25984., 20398., 21220., 22180.,
      23008., 23986., 24820., 25816., 26656., 20902., 21748., 22732., 23584.,
      24586., 25444., 26464., 27328., 21406., 22276., 23284., 24160., 25186.,
      26068., 27112., 28000., 24430., 25444., 26596., 27616., 28786., 29812.,
      31000., 32032., 24934., 25972., 27148., 28192., 29386., 30436., 31648.,
      32704., 25438., 26500., 27700., 28768., 29986., 31060., 32296., 33376.,
      25942., 27028., 28252., 29344., 30586., 31684., 32944., 34048., 26446.,
      27556., 28804., 29920., 31186., 32308., 33592., 34720., 29470., 30724.,
      32116., 33376., 34786., 36052., 37480., 38752., 29974., 31252., 32668.,
      33952., 35386., 36676., 38128., 39424., 30478., 31780., 33220., 34528.,
      35986., 37300., 38776., 40096., 30982., 32308., 33772., 35104., 36586.,
      37924., 39424., 40768., 31486., 32836., 34324., 35680., 37186., 38548.,
      40072., 41440.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      383564., 385208., 386852., 388496., 392600., 394256., 395912., 397568.,
      401732., 403400., 405068., 406736., 410960., 412640., 414320., 416000.,
      464455., 466510., 468565., 470620., 475630., 477700., 479770., 481840.,
      486925., 489010., 491095., 493180., 498340., 500440., 502540., 504640.,
      476035., 478150., 480265., 482380., 487450., 489580., 491710., 493840.,
      498985., 501130., 503275., 505420., 510640., 512800., 514960., 517120.,
      366140., 367832., 369524., 371216., 375176., 376880., 378584., 380288.,
      384308., 386024., 387740., 389456., 393536., 395264., 396992., 398720.,
      375020., 376760., 378500., 380240., 384248., 386000., 387752., 389504.,
      393572., 395336., 397100., 398864., 402992., 404768., 406544., 408320.,
      483472., 485664., 487856., 490048., 494880., 497088., 499296., 501504.,
      506416., 508640., 510864., 513088., 518080., 520320., 522560., 524800.,
      584340., 587080., 589820., 592560., 598440., 601200., 603960., 606720.,
      612700., 615480., 618260., 621040., 627120., 629920., 632720., 635520.,
      596580., 599400., 602220., 605040., 611000., 613840., 616680., 619520.,
      625580., 628440., 631300., 634160., 640320., 643200., 646080., 648960.,
      457680., 459936., 462192., 464448., 469088., 471360., 473632., 475904.,
      480624., 482912., 485200., 487488., 492288., 494592., 496896., 499200.,
      466960., 469280., 471600., 473920., 478624., 480960., 483296., 485632.,
      490416., 492768., 495120., 497472., 502336., 504704., 507072., 509440.,
      586512., 589344., 592176., 595008., 600480., 603328., 606176., 609024.,
      614576., 617440., 620304., 623168., 628800., 631680., 634560., 637440.,
      706740., 710280., 713820., 717360., 724040., 727600., 731160., 734720.,
      741500., 745080., 748660., 752240., 759120., 762720., 766320., 769920.,
      718980., 722600., 726220., 729840., 736600., 740240., 743880., 747520.,
      754380., 758040., 761700., 765360., 772320., 776000., 779680., 783360.,
      550480., 553376., 556272., 559168., 564448., 567360., 570272., 573184.,
      578544., 581472., 584400., 587328., 592768., 595712., 598656., 601600.,
      559760., 562720., 565680., 568640., 573984., 576960., 579936., 582912.,
      588336., 591328., 594320., 597312., 602816., 605824., 608832., 611840.,
      310124., 312248., 314372., 316496., 320120., 322256., 324392., 326528.,
      330212., 332360., 334508., 336656., 340400., 342560., 344720., 346880.,
      367855., 370510., 373165., 375820., 380230., 382900., 385570., 388240.,
      392725., 395410., 398095., 400780., 405340., 408040., 410740., 413440.,
      374635., 377350., 380065., 382780., 387250., 389980., 392710., 395440.,
      399985., 402730., 405475., 408220., 412840., 415600., 418360., 421120.,
      281180., 283352., 285524., 287696., 291176., 293360., 295544., 297728.,
      301268., 303464., 305660., 307856., 311456., 313664., 315872., 318080.,
      286220., 288440., 290660., 292880., 296408., 298640., 300872., 303104.,
      306692., 308936., 311180., 313424., 317072., 319328., 321584., 323840.,
      368204., 370808., 373412., 376016., 380120., 382736., 385352., 387968.,
      392132., 394760., 397388., 400016., 404240., 406880., 409520., 412160.,
      435655., 438910., 442165., 445420., 450430., 453700., 456970., 460240.,
      465325., 468610., 471895., 475180., 480340., 483640., 486940., 490240.,
      442435., 445750., 449065., 452380., 457450., 460780., 464110., 467440.,
      472585., 475930., 479275., 482620., 487840., 491200., 494560., 497920.,
      331580., 334232., 336884., 339536., 343496., 346160., 348824., 351488.,
      355508., 358184., 360860., 363536., 367616., 370304., 372992., 375680.,
      336620., 339320., 342020., 344720., 348728., 351440., 354152., 356864.,
      360932., 363656., 366380., 369104., 373232., 375968., 378704., 381440.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18326., 18620., 18914., 19208., 19772., 20072., 20372., 20672., 21266.,
      21572., 21878., 22184., 22808., 23120., 23432., 23744., 19310., 19628.,
      19946., 20264., 20852., 21176., 21500., 21824., 22442., 22772., 23102.,
      23432., 24080., 24416., 24752., 25088., 20294., 20636., 20978., 21320.,
      21932., 22280., 22628., 22976., 23618., 23972., 24326., 24680., 25352.,
      25712., 26072., 26432., 21278., 21644., 22010., 22376., 23012., 23384.,
      23756., 24128., 24794., 25172., 25550., 25928., 26624., 27008., 27392.,
      27776., 22262., 22652., 23042., 23432., 24092., 24488., 24884., 25280.,
      25970., 26372., 26774., 27176., 27896., 28304., 28712., 29120., 28166.,
      28700., 29234., 29768., 30572., 31112., 31652., 32192., 33026., 33572.,
      34118., 34664., 35528., 36080., 36632., 37184., 29150., 29708., 30266.,
      30824., 31652., 32216., 32780., 33344., 34202., 34772., 35342., 35912.,
      36800., 37376., 37952., 38528., 30134., 30716., 31298., 31880., 32732.,
      33320., 33908., 34496., 35378., 35972., 36566., 37160., 38072., 38672.,
      39272., 39872., 31118., 31724., 32330., 32936., 33812., 34424., 35036.,
      35648., 36554., 37172., 37790., 38408., 39344., 39968., 40592., 41216.,
      32102., 32732., 33362., 33992., 34892., 35528., 36164., 36800., 37730.,
      38372., 39014., 39656., 40616., 41264., 41912., 42560., 38006., 38780.,
      39554., 40328., 41372., 42152., 42932., 43712., 44786., 45572., 46358.,
      47144., 48248., 49040., 49832., 50624., 38990., 39788., 40586., 41384.,
      42452., 43256., 44060., 44864., 45962., 46772., 47582., 48392., 49520.,
      50336., 51152., 51968., 39974., 40796., 41618., 42440., 43532., 44360.,
      45188., 46016., 47138., 47972., 48806., 49640., 50792., 51632., 52472.,
      53312., 40958., 41804., 42650., 43496., 44612., 45464., 46316., 47168.,
      48314., 49172., 50030., 50888., 52064., 52928., 53792., 54656., 41942.,
      42812., 43682., 44552., 45692., 46568., 47444., 48320., 49490., 50372.,
      51254., 52136., 53336., 54224., 55112., 56000., 47846., 48860., 49874.,
      50888., 52172., 53192., 54212., 55232., 56546., 57572., 58598., 59624.,
      60968., 62000., 63032., 64064., 48830., 49868., 50906., 51944., 53252.,
      54296., 55340., 56384., 57722., 58772., 59822., 60872., 62240., 63296.,
      64352., 65408., 49814., 50876., 51938., 53000., 54332., 55400., 56468.,
      57536., 58898., 59972., 61046., 62120., 63512., 64592., 65672., 66752.,
      50798., 51884., 52970., 54056., 55412., 56504., 57596., 58688., 60074.,
      61172., 62270., 63368., 64784., 65888., 66992., 68096., 51782., 52892.,
      54002., 55112., 56492., 57608., 58724., 59840., 61250., 62372., 63494.,
      64616., 66056., 67184., 68312., 69440., 57686., 58940., 60194., 61448.,
      62972., 64232., 65492., 66752., 68306., 69572., 70838., 72104., 73688.,
      74960., 76232., 77504., 58670., 59948., 61226., 62504., 64052., 65336.,
      66620., 67904., 69482., 70772., 72062., 73352., 74960., 76256., 77552.,
      78848., 59654., 60956., 62258., 63560., 65132., 66440., 67748., 69056.,
      70658., 71972., 73286., 74600., 76232., 77552., 78872., 80192., 60638.,
      61964., 63290., 64616., 66212., 67544., 68876., 70208., 71834., 73172.,
      74510., 75848., 77504., 78848., 80192., 81536., 61622., 62972., 64322.,
      65672., 67292., 68648., 70004., 71360., 73010., 74372., 75734., 77096.,
      78776., 80144., 81512., 82880.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5692., 5848., 7560., 5464.,  5608., 6815., 6980., 9010., 6500.,
      6650., 7970., 8135., 10480., 7550., 7700., 4960., 5068., 6464.,
      4600., 4696., 5716., 5824.,  7416., 5272., 5368.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      451., 472., 493.,  514.,  535.,  598.,  619., 640., 661.,
      682., 745., 766.,  787.,  808.,  829.,  892., 913., 934.,
      955., 976., 1039., 1060., 1081., 1102., 1123.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11012., 11384., 11312., 11696., 14608., 15120., 10544., 10928., 10820.,
      11216., 13165., 13630., 13480., 13960., 17380., 18020., 12520., 13000.,
      12805., 13300., 15370., 15940., 15685., 16270., 20180., 20960., 14515.,
      15100., 14800., 15400., 9464.,  9920.,  9668.,  10136., 12304., 12928.,
      8732.,  9200.,  8912.,  9392.,  10892., 11432., 11096., 11648., 14096.,
      14832., 9992.,  10544., 10172., 10736.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      806.,  902.,  842.,  944.,  878.,  986.,  914.,  1028., 950.,  1070.,
      1058., 1196., 1094., 1238., 1130., 1280., 1166., 1322., 1202., 1364.,
      1310., 1490., 1346., 1532., 1382., 1574., 1418., 1616., 1454., 1658.,
      1562., 1784., 1598., 1826., 1634., 1868., 1670., 1910., 1706., 1952.,
      1814., 2078., 1850., 2120., 1886., 2162., 1922., 2204., 1958., 2246.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21652., 22024., 22396., 22768., 22240., 22624., 23008., 23392., 28704.,
      29216., 29728., 30240., 20704., 21088., 21472., 21856., 21244., 21640.,
      22036., 22432., 25865., 26330., 26795., 27260., 26480., 26960., 27440.,
      27920., 34120., 34760., 35400., 36040., 24560., 25040., 25520., 26000.,
      25115., 25610., 26105., 26600., 30170., 30740., 31310., 31880., 30785.,
      31370., 31955., 32540., 39580., 40360., 41140., 41920., 28445., 29030.,
      29615., 30200., 29000., 29600., 30200., 30800., 18472., 18928., 19384.,
      19840., 18868., 19336., 19804., 20272., 23984., 24608., 25232., 25856.,
      16996., 17464., 17932., 18400., 17344., 17824., 18304., 18784., 21244.,
      21784., 22324., 22864., 21640., 22192., 22744., 23296., 27456., 28192.,
      28928., 29664., 19432., 19984., 20536., 21088., 19780., 20344., 20908.,
      21472.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1516., 1612., 1708., 1804., 1582., 1684., 1786., 1888., 1648., 1756.,
      1864., 1972., 1714., 1828., 1942., 2056., 1780., 1900., 2020., 2140.,
      1978., 2116., 2254., 2392., 2044., 2188., 2332., 2476., 2110., 2260.,
      2410., 2560., 2176., 2332., 2488., 2644., 2242., 2404., 2566., 2728.,
      2440., 2620., 2800., 2980., 2506., 2692., 2878., 3064., 2572., 2764.,
      2956., 3148., 2638., 2836., 3034., 3232., 2704., 2908., 3112., 3316.,
      2902., 3124., 3346., 3568., 2968., 3196., 3424., 3652., 3034., 3268.,
      3502., 3736., 3100., 3340., 3580., 3820., 3166., 3412., 3658., 3904.,
      3364., 3628., 3892., 4156., 3430., 3700., 3970., 4240., 3496., 3772.,
      4048., 4324., 3562., 3844., 4126., 4408., 3628., 3916., 4204., 4492.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21724., 22768., 22324., 23392., 28832., 30240., 20812., 21856., 21364.,
      22432., 26015., 27260., 26645., 27920., 34360., 36040., 24755., 26000.,
      25325., 26600., 30425., 31880., 31055., 32540., 39960., 41920., 28745.,
      30200., 29315., 30800., 18724., 19840., 19132., 20272., 24352., 25856.,
      17284., 18400., 17644., 18784., 21580., 22864., 21988., 23296., 27936.,
      29664., 19804., 21088., 20164., 21472.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1576., 1804., 1648., 1888., 1720., 1972., 1792., 2056., 1864., 2140.,
      2080., 2392., 2152., 2476., 2224., 2560., 2296., 2644., 2368., 2728.,
      2584., 2980., 2656., 3064., 2728., 3148., 2800., 3232., 2872., 3316.,
      3088., 3568., 3160., 3652., 3232., 3736., 3304., 3820., 3376., 3904.,
      3592., 4156., 3664., 4240., 3736., 4324., 3808., 4408., 3880., 4492.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      42716., 43448., 44792., 45536., 43892., 44648., 46016., 46784., 56656.,
      57664., 59456., 60480., 40868., 41624., 42944., 43712., 41948., 42728.,
      44072., 44864., 51115., 52030., 53590., 54520., 52345., 53290., 54880.,
      55840., 67460., 68720., 70800., 72080., 48565., 49510., 51040., 52000.,
      49675., 50650., 52210., 53200., 59725., 60850., 62620., 63760., 60955.,
      62110., 63910., 65080., 78380., 79920., 82280., 83840., 56335., 57490.,
      59230., 60400., 57445., 58630., 60400., 61600., 36548., 37448., 38768.,
      39680., 37340., 38264., 39608., 40544., 47472., 48704., 50464., 51712.,
      33644., 34568., 35864., 36800., 34340., 35288., 36608., 37568., 42092.,
      43160., 44648., 45728., 42884., 43976., 45488., 46592., 54416., 55872.,
      57856., 59328., 38516., 39608., 41072., 42176., 39212., 40328., 41816.,
      42944.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2966., 3152., 3416., 3608., 3098., 3296., 3572., 3776., 3230., 3440.,
      3728., 3944., 3362., 3584., 3884., 4112., 3494., 3728., 4040., 4280.,
      3890., 4160., 4508., 4784., 4022., 4304., 4664., 4952., 4154., 4448.,
      4820., 5120., 4286., 4592., 4976., 5288., 4418., 4736., 5132., 5456.,
      4814., 5168., 5600., 5960., 4946., 5312., 5756., 6128., 5078., 5456.,
      5912., 6296., 5210., 5600., 6068., 6464., 5342., 5744., 6224., 6632.,
      5738., 6176., 6692., 7136., 5870., 6320., 6848., 7304., 6002., 6464.,
      7004., 7472., 6134., 6608., 7160., 7640., 6266., 6752., 7316., 7808.,
      6662., 7184., 7784., 8312., 6794., 7328., 7940., 8480., 6926., 7472.,
      8096., 8648., 7058., 7616., 8252., 8816., 7190., 7760., 8408., 8984.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      84700.,  85432.,  86164.,  86896.,  88840.,  89584.,  90328.,  91072.,
      87028.,  87784.,  88540.,  89296.,  91264.,  92032.,  92800.,  93568.,
      112304., 113312., 114320., 115328., 117888., 118912., 119936., 120960.,
      80980.,  81736.,  82492.,  83248.,  85120.,  85888.,  86656.,  87424.,
      83116.,  83896.,  84676.,  85456.,  87352.,  88144.,  88936.,  89728.,
      101315., 102230., 103145., 104060., 106250., 107180., 108110., 109040.,
      103745., 104690., 105635., 106580., 108800., 109760., 110720., 111680.,
      133660., 134920., 136180., 137440., 140320., 141600., 142880., 144160.,
      96185.,  97130.,  98075.,  99020.,  101120., 102080., 103040., 104000.,
      98375.,  99350.,  100325., 101300., 103430., 104420., 105410., 106400.,
      118325., 119450., 120575., 121700., 124100., 125240., 126380., 127520.,
      120755., 121910., 123065., 124220., 126650., 127820., 128990., 130160.,
      155220., 156760., 158300., 159840., 163000., 164560., 166120., 167680.,
      111515., 112670., 113825., 114980., 117290., 118460., 119630., 120800.,
      113705., 114890., 116075., 117260., 119600., 120800., 122000., 123200.,
      72196.,  73096.,  73996.,  74896.,  76624.,  77536.,  78448.,  79360.,
      73756.,  74680.,  75604.,  76528.,  78280.,  79216.,  80152.,  81088.,
      93712.,  94944.,  96176.,  97408.,  99680.,  100928., 102176., 103424.,
      66364.,  67288.,  68212.,  69136.,  70792.,  71728.,  72664.,  73600.,
      67732.,  68680.,  69628.,  70576.,  72256.,  73216.,  74176.,  75136.,
      83116.,  84184.,  85252.,  86320.,  88216.,  89296.,  90376.,  91456.,
      84676.,  85768.,  86860.,  87952.,  89872.,  90976.,  92080.,  93184.,
      107376., 108832., 110288., 111744., 114240., 115712., 117184., 118656.,
      75940.,  77032.,  78124.,  79216.,  81040.,  82144.,  83248.,  84352.,
      77308.,  78424.,  79540.,  80656.,  82504.,  83632.,  84760.,  85888.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5746.,  5932.,  6118.,  6304.,  6640.,  6832.,  7024.,  7216.,  5998.,
      6196.,  6394.,  6592.,  6940.,  7144.,  7348.,  7552.,  6250.,  6460.,
      6670.,  6880.,  7240.,  7456.,  7672.,  7888.,  6502.,  6724.,  6946.,
      7168.,  7540.,  7768.,  7996.,  8224.,  6754.,  6988.,  7222.,  7456.,
      7840.,  8080.,  8320.,  8560.,  7510.,  7780.,  8050.,  8320.,  8740.,
      9016.,  9292.,  9568.,  7762.,  8044.,  8326.,  8608.,  9040.,  9328.,
      9616.,  9904.,  8014.,  8308.,  8602.,  8896.,  9340.,  9640.,  9940.,
      10240., 8266.,  8572.,  8878.,  9184.,  9640.,  9952.,  10264., 10576.,
      8518.,  8836.,  9154.,  9472.,  9940.,  10264., 10588., 10912., 9274.,
      9628.,  9982.,  10336., 10840., 11200., 11560., 11920., 9526.,  9892.,
      10258., 10624., 11140., 11512., 11884., 12256., 9778.,  10156., 10534.,
      10912., 11440., 11824., 12208., 12592., 10030., 10420., 10810., 11200.,
      11740., 12136., 12532., 12928., 10282., 10684., 11086., 11488., 12040.,
      12448., 12856., 13264., 11038., 11476., 11914., 12352., 12940., 13384.,
      13828., 14272., 11290., 11740., 12190., 12640., 13240., 13696., 14152.,
      14608., 11542., 12004., 12466., 12928., 13540., 14008., 14476., 14944.,
      11794., 12268., 12742., 13216., 13840., 14320., 14800., 15280., 12046.,
      12532., 13018., 13504., 14140., 14632., 15124., 15616., 12802., 13324.,
      13846., 14368., 15040., 15568., 16096., 16624., 13054., 13588., 14122.,
      14656., 15340., 15880., 16420., 16960., 13306., 13852., 14398., 14944.,
      15640., 16192., 16744., 17296., 13558., 14116., 14674., 15232., 15940.,
      16504., 17068., 17632., 13810., 14380., 14950., 15520., 16240., 16816.,
      17392., 17968.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      84844.,  86896.,  88972.,  91072.,  87196.,  89296.,  91420.,  93568.,
      112560., 115328., 118128., 120960., 81196.,  83248.,  85324.,  87424.,
      83356.,  85456.,  87580.,  89728.,  101615., 104060., 106535., 109040.,
      104075., 106580., 109115., 111680., 134140., 137440., 140780., 144160.,
      96575.,  99020.,  101495., 104000., 98795.,  101300., 103835., 106400.,
      118835., 121700., 124595., 127520., 121295., 124220., 127175., 130160.,
      155980., 159840., 163740., 167680., 112115., 114980., 117875., 120800.,
      114335., 117260., 120215., 123200., 72700.,  74896.,  77116.,  79360.,
      74284.,  76528.,  78796.,  81088.,  94448.,  97408.,  100400., 103424.,
      66940.,  69136.,  71356.,  73600.,  68332.,  70576.,  72844.,  75136.,
      83788.,  86320.,  88876.,  91456.,  85372.,  87952.,  90556.,  93184.,
      108336., 111744., 115184., 118656., 76684.,  79216.,  81772.,  84352.,
      78076.,  80656.,  83260.,  85888.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5866.,  6304.,  6754.,  7216.,  6130.,  6592.,  7066.,  7552.,  6394.,
      6880.,  7378.,  7888.,  6658.,  7168.,  7690.,  8224.,  6922.,  7456.,
      8002.,  8560.,  7714.,  8320.,  8938.,  9568.,  7978.,  8608.,  9250.,
      9904.,  8242.,  8896.,  9562.,  10240., 8506.,  9184.,  9874.,  10576.,
      8770.,  9472.,  10186., 10912., 9562.,  10336., 11122., 11920., 9826.,
      10624., 11434., 12256., 10090., 10912., 11746., 12592., 10354., 11200.,
      12058., 12928., 10618., 11488., 12370., 13264., 11410., 12352., 13306.,
      14272., 11674., 12640., 13618., 14608., 11938., 12928., 13930., 14944.,
      12202., 13216., 14242., 15280., 12466., 13504., 14554., 15616., 13258.,
      14368., 15490., 16624., 13522., 14656., 15802., 16960., 13786., 14944.,
      16114., 17296., 14050., 15232., 16426., 17632., 14314., 15520., 16738.,
      17968.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      168236., 169688., 172328., 173792., 176468., 177944., 180656., 182144.,
      172892., 174392., 177080., 178592., 181316., 182840., 185600., 187136.,
      223120., 225120., 228640., 230656., 234224., 236256., 239872., 241920.,
      160892., 162392., 164984., 166496., 169124., 170648., 173312., 174848.,
      165164., 166712., 169352., 170912., 173588., 175160., 177872., 179456.,
      201415., 203230., 206290., 208120., 211225., 213070., 216220., 218080.,
      206275., 208150., 211270., 213160., 216325., 218230., 221440., 223360.,
      265780., 268280., 272360., 274880., 279020., 281560., 285760., 288320.,
      191275., 193150., 196150., 198040., 201085., 202990., 206080., 208000.,
      195655., 197590., 200650., 202600., 205705., 207670., 210820., 212800.,
      235435., 237670., 241150., 243400., 246925., 249190., 252760., 255040.,
      240295., 242590., 246130., 248440., 252025., 254350., 257980., 260320.,
      308900., 311960., 316600., 319680., 324380., 327480., 332240., 335360.,
      221935., 224230., 227650., 229960., 233425., 235750., 239260., 241600.,
      226315., 228670., 232150., 234520., 238045., 240430., 244000., 246400.,
      143612., 145400., 147992., 149792., 152420., 154232., 156896., 158720.,
      146732., 148568., 151208., 153056., 155732., 157592., 160304., 162176.,
      186448., 188896., 192352., 194816., 198320., 200800., 204352., 206848.,
      132044., 133880., 136424., 138272., 140852., 142712., 145328., 147200.,
      134780., 136664., 139256., 141152., 143780., 145688., 148352., 150272.,
      165452., 167576., 170504., 172640., 175604., 177752., 180752., 182912.,
      168572., 170744., 173720., 175904., 178916., 181112., 184160., 186368.,
      213776., 216672., 220576., 223488., 227440., 230368., 234368., 237312.,
      151196., 153368., 156248., 158432., 161348., 163544., 166496., 168704.,
      153932., 156152., 159080., 161312., 164276., 166520., 169520., 171776.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11366., 11732., 12236., 12608., 13130., 13508., 14048., 14432., 11870.,
      12260., 12788., 13184., 13730., 14132., 14696., 15104., 12374., 12788.,
      13340., 13760., 14330., 14756., 15344., 15776., 12878., 13316., 13892.,
      14336., 14930., 15380., 15992., 16448., 13382., 13844., 14444., 14912.,
      15530., 16004., 16640., 17120., 14894., 15428., 16100., 16640., 17330.,
      17876., 18584., 19136., 15398., 15956., 16652., 17216., 17930., 18500.,
      19232., 19808., 15902., 16484., 17204., 17792., 18530., 19124., 19880.,
      20480., 16406., 17012., 17756., 18368., 19130., 19748., 20528., 21152.,
      16910., 17540., 18308., 18944., 19730., 20372., 21176., 21824., 18422.,
      19124., 19964., 20672., 21530., 22244., 23120., 23840., 18926., 19652.,
      20516., 21248., 22130., 22868., 23768., 24512., 19430., 20180., 21068.,
      21824., 22730., 23492., 24416., 25184., 19934., 20708., 21620., 22400.,
      23330., 24116., 25064., 25856., 20438., 21236., 22172., 22976., 23930.,
      24740., 25712., 26528., 21950., 22820., 23828., 24704., 25730., 26612.,
      27656., 28544., 22454., 23348., 24380., 25280., 26330., 27236., 28304.,
      29216., 22958., 23876., 24932., 25856., 26930., 27860., 28952., 29888.,
      23462., 24404., 25484., 26432., 27530., 28484., 29600., 30560., 23966.,
      24932., 26036., 27008., 28130., 29108., 30248., 31232., 25478., 26516.,
      27692., 28736., 29930., 30980., 32192., 33248., 25982., 27044., 28244.,
      29312., 30530., 31604., 32840., 33920., 26486., 27572., 28796., 29888.,
      31130., 32228., 33488., 34592., 26990., 28100., 29348., 30464., 31730.,
      32852., 34136., 35264., 27494., 28628., 29900., 31040., 32330., 33476.,
      34784., 35936.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      335020., 336472., 337924., 339376., 343192., 344656., 346120., 347584.,
      351460., 352936., 354412., 355888., 359824., 361312., 362800., 364288.,
      344284., 345784., 347284., 348784., 352648., 354160., 355672., 357184.,
      361108., 362632., 364156., 365680., 369664., 371200., 372736., 374272.,
      444240., 446240., 448240., 450240., 455264., 457280., 459296., 461312.,
      466416., 468448., 470480., 472512., 477696., 479744., 481792., 483840.,
      320284., 321784., 323284., 324784., 328456., 329968., 331480., 332992.,
      336724., 338248., 339772., 341296., 345088., 346624., 348160., 349696.,
      328780., 330328., 331876., 333424., 337144., 338704., 340264., 341824.,
      345604., 347176., 348748., 350320., 354160., 355744., 357328., 358912.,
      401015., 402830., 404645., 406460., 410750., 412580., 414410., 416240.,
      420605., 422450., 424295., 426140., 430580., 432440., 434300., 436160.,
      410675., 412550., 414425., 416300., 420650., 422540., 424430., 426320.,
      430745., 432650., 434555., 436460., 440960., 442880., 444800., 446720.,
      529060., 531560., 534060., 536560., 542200., 544720., 547240., 549760.,
      555500., 558040., 560580., 563120., 568960., 571520., 574080., 576640.,
      380675., 382550., 384425., 386300., 390410., 392300., 394190., 396080.,
      400265., 402170., 404075., 405980., 410240., 412160., 414080., 416000.,
      389375., 391310., 393245., 395180., 399350., 401300., 403250., 405200.,
      409445., 411410., 413375., 415340., 419660., 421640., 423620., 425600.,
      468635., 470870., 473105., 475340., 480050., 482300., 484550., 486800.,
      491585., 493850., 496115., 498380., 503240., 505520., 507800., 510080.,
      478295., 480590., 482885., 485180., 489950., 492260., 494570., 496880.,
      501725., 504050., 506375., 508700., 513620., 515960., 518300., 520640.,
      614740., 617800., 620860., 623920., 630120., 633200., 636280., 639360.,
      645660., 648760., 651860., 654960., 661360., 664480., 667600., 670720.,
      441575., 443870., 446165., 448460., 452990., 455300., 457610., 459920.,
      464525., 466850., 469175., 471500., 476180., 478520., 480860., 483200.,
      450275., 452630., 454985., 457340., 461930., 464300., 466670., 469040.,
      473705., 476090., 478475., 480860., 485600., 488000., 490400., 492800.,
      285436., 287224., 289012., 290800., 294184., 295984., 297784., 299584.,
      303028., 304840., 306652., 308464., 311968., 313792., 315616., 317440.,
      291628., 293464., 295300., 297136., 300568., 302416., 304264., 306112.,
      309604., 311464., 313324., 315184., 318736., 320608., 322480., 324352.,
      370448., 372896., 375344., 377792., 382240., 384704., 387168., 389632.,
      394160., 396640., 399120., 401600., 406208., 408704., 411200., 413696.,
      262252., 264088., 265924., 267760., 271000., 272848., 274696., 276544.,
      279844., 281704., 283564., 285424., 288784., 290656., 292528., 294400.,
      267676., 269560., 271444., 273328., 276616., 278512., 280408., 282304.,
      285652., 287560., 289468., 291376., 294784., 296704., 298624., 300544.,
      328780., 330904., 333028., 335152., 338872., 341008., 343144., 345280.,
      349060., 351208., 353356., 355504., 359344., 361504., 363664., 365824.,
      334972., 337144., 339316., 341488., 345256., 347440., 349624., 351808.,
      355636., 357832., 360028., 362224., 366112., 368320., 370528., 372736.,
      424656., 427552., 430448., 433344., 438240., 441152., 444064., 446976.,
      451952., 454880., 457808., 460736., 465792., 468736., 471680., 474624.,
      300220., 302392., 304564., 306736., 310312., 312496., 314680., 316864.,
      320500., 322696., 324892., 327088., 330784., 332992., 335200., 337408.,
      305644., 307864., 310084., 312304., 315928., 318160., 320392., 322624.,
      326308., 328552., 330796., 333040., 336784., 339040., 341296., 343552.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22366., 22732., 23098., 23464., 24100., 24472., 24844., 25216., 25882.,
      26260., 26638., 27016., 27712., 28096., 28480., 28864., 23350., 23740.,
      24130., 24520., 25180., 25576., 25972., 26368., 27058., 27460., 27862.,
      28264., 28984., 29392., 29800., 30208., 24334., 24748., 25162., 25576.,
      26260., 26680., 27100., 27520., 28234., 28660., 29086., 29512., 30256.,
      30688., 31120., 31552., 25318., 25756., 26194., 26632., 27340., 27784.,
      28228., 28672., 29410., 29860., 30310., 30760., 31528., 31984., 32440.,
      32896., 26302., 26764., 27226., 27688., 28420., 28888., 29356., 29824.,
      30586., 31060., 31534., 32008., 32800., 33280., 33760., 34240., 29254.,
      29788., 30322., 30856., 31660., 32200., 32740., 33280., 34114., 34660.,
      35206., 35752., 36616., 37168., 37720., 38272., 30238., 30796., 31354.,
      31912., 32740., 33304., 33868., 34432., 35290., 35860., 36430., 37000.,
      37888., 38464., 39040., 39616., 31222., 31804., 32386., 32968., 33820.,
      34408., 34996., 35584., 36466., 37060., 37654., 38248., 39160., 39760.,
      40360., 40960., 32206., 32812., 33418., 34024., 34900., 35512., 36124.,
      36736., 37642., 38260., 38878., 39496., 40432., 41056., 41680., 42304.,
      33190., 33820., 34450., 35080., 35980., 36616., 37252., 37888., 38818.,
      39460., 40102., 40744., 41704., 42352., 43000., 43648., 36142., 36844.,
      37546., 38248., 39220., 39928., 40636., 41344., 42346., 43060., 43774.,
      44488., 45520., 46240., 46960., 47680., 37126., 37852., 38578., 39304.,
      40300., 41032., 41764., 42496., 43522., 44260., 44998., 45736., 46792.,
      47536., 48280., 49024., 38110., 38860., 39610., 40360., 41380., 42136.,
      42892., 43648., 44698., 45460., 46222., 46984., 48064., 48832., 49600.,
      50368., 39094., 39868., 40642., 41416., 42460., 43240., 44020., 44800.,
      45874., 46660., 47446., 48232., 49336., 50128., 50920., 51712., 40078.,
      40876., 41674., 42472., 43540., 44344., 45148., 45952., 47050., 47860.,
      48670., 49480., 50608., 51424., 52240., 53056., 43030., 43900., 44770.,
      45640., 46780., 47656., 48532., 49408., 50578., 51460., 52342., 53224.,
      54424., 55312., 56200., 57088., 44014., 44908., 45802., 46696., 47860.,
      48760., 49660., 50560., 51754., 52660., 53566., 54472., 55696., 56608.,
      57520., 58432., 44998., 45916., 46834., 47752., 48940., 49864., 50788.,
      51712., 52930., 53860., 54790., 55720., 56968., 57904., 58840., 59776.,
      45982., 46924., 47866., 48808., 50020., 50968., 51916., 52864., 54106.,
      55060., 56014., 56968., 58240., 59200., 60160., 61120., 46966., 47932.,
      48898., 49864., 51100., 52072., 53044., 54016., 55282., 56260., 57238.,
      58216., 59512., 60496., 61480., 62464., 49918., 50956., 51994., 53032.,
      54340., 55384., 56428., 57472., 58810., 59860., 60910., 61960., 63328.,
      64384., 65440., 66496., 50902., 51964., 53026., 54088., 55420., 56488.,
      57556., 58624., 59986., 61060., 62134., 63208., 64600., 65680., 66760.,
      67840., 51886., 52972., 54058., 55144., 56500., 57592., 58684., 59776.,
      61162., 62260., 63358., 64456., 65872., 66976., 68080., 69184., 52870.,
      53980., 55090., 56200., 57580., 58696., 59812., 60928., 62338., 63460.,
      64582., 65704., 67144., 68272., 69400., 70528., 53854., 54988., 56122.,
      57256., 58660., 59800., 60940., 62080., 63514., 64660., 65806., 66952.,
      68416., 69568., 70720., 71872.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6592., 8520., 8720.,  6304.,  6448., 7880., 10170., 10380., 7490.,
      7640., 9200., 11850., 12060., 8690., 8840., 5728.,  7304.,  7440.,
      5296., 5392., 6592.,  8392.,  8528., 6064., 6160.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      509.,  530.,  551.,  572.,  593.,  677.,  698.,  719.,  740.,
      761.,  845.,  866.,  887.,  908.,  929.,  1013., 1034., 1055.,
      1076., 1097., 1181., 1202., 1223., 1244., 1265.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12752., 13184., 16464., 17040., 16848., 17440., 12164., 12608., 12440.,
      12896., 15220., 15760., 19620., 20340., 20020., 20760., 14425., 14980.,
      14710., 15280., 17740., 18400., 22820., 23700., 23220., 24120., 16705.,
      17380., 16990., 17680., 10928., 11456., 13904., 14608., 14160., 14880.,
      10052., 10592., 10232., 10784., 12560., 13184., 15952., 16784., 16208.,
      17056., 11492., 12128., 11672., 12320.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      910.,  1018., 946.,  1060., 982.,  1102., 1018., 1144., 1054., 1186.,
      1198., 1354., 1234., 1396., 1270., 1438., 1306., 1480., 1342., 1522.,
      1486., 1690., 1522., 1732., 1558., 1774., 1594., 1816., 1630., 1858.,
      1774., 2026., 1810., 2068., 1846., 2110., 1882., 2152., 1918., 2194.,
      2062., 2362., 2098., 2404., 2134., 2446., 2170., 2488., 2206., 2530.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25072., 25504., 25936., 26368., 32352., 32928., 33504., 34080., 33104.,
      33696., 34288., 34880., 23884., 24328., 24772., 25216., 24424., 24880.,
      25336., 25792., 29900., 30440., 30980., 31520., 38520., 39240., 39960.,
      40680., 39300., 40040., 40780., 41520., 28295., 28850., 29405., 29960.,
      28850., 29420., 29990., 30560., 34820., 35480., 36140., 36800., 44760.,
      45640., 46520., 47400., 45540., 46440., 47340., 48240., 32735., 33410.,
      34085., 34760., 33290., 33980., 34670., 35360., 21328., 21856., 22384.,
      22912., 27104., 27808., 28512., 29216., 27600., 28320., 29040., 29760.,
      19564., 20104., 20644., 21184., 19912., 20464., 21016., 21568., 24496.,
      25120., 25744., 26368., 31072., 31904., 32736., 33568., 31568., 32416.,
      33264., 34112., 22348., 22984., 23620., 24256., 22696., 23344., 23992.,
      24640.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1712., 1820., 1928., 2036., 1778., 1892., 2006., 2120., 1844., 1964.,
      2084., 2204., 1910., 2036., 2162., 2288., 1976., 2108., 2240., 2372.,
      2240., 2396., 2552., 2708., 2306., 2468., 2630., 2792., 2372., 2540.,
      2708., 2876., 2438., 2612., 2786., 2960., 2504., 2684., 2864., 3044.,
      2768., 2972., 3176., 3380., 2834., 3044., 3254., 3464., 2900., 3116.,
      3332., 3548., 2966., 3188., 3410., 3632., 3032., 3260., 3488., 3716.,
      3296., 3548., 3800., 4052., 3362., 3620., 3878., 4136., 3428., 3692.,
      3956., 4220., 3494., 3764., 4034., 4304., 3560., 3836., 4112., 4388.,
      3824., 4124., 4424., 4724., 3890., 4196., 4502., 4808., 3956., 4268.,
      4580., 4892., 4022., 4340., 4658., 4976., 4088., 4412., 4736., 5060.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25204., 26368., 32544., 34080., 33312., 34880., 24052., 25216., 24604.,
      25792., 30125., 31520., 38840., 40680., 39640., 41520., 28565., 29960.,
      29135., 30560., 35165., 36800., 45240., 47400., 46040., 48240., 33125.,
      34760., 33695., 35360., 21652., 22912., 27552., 29216., 28064., 29760.,
      19924., 21184., 20284., 21568., 24916., 26368., 31648., 33568., 32160.,
      34112., 22804., 24256., 23164., 24640.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1784., 2036., 1856., 2120., 1928., 2204., 2000., 2288., 2072., 2372.,
      2360., 2708., 2432., 2792., 2504., 2876., 2576., 2960., 2648., 3044.,
      2936., 3380., 3008., 3464., 3080., 3548., 3152., 3632., 3224., 3716.,
      3512., 4052., 3584., 4136., 3656., 4220., 3728., 4304., 3800., 4388.,
      4088., 4724., 4160., 4808., 4232., 4892., 4304., 4976., 4376., 5060.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      49556., 50408., 51872., 52736., 63952., 65088., 67008., 68160., 65456.,
      66624., 68576., 69760., 47228., 48104., 49544., 50432., 48308., 49208.,
      50672., 51584., 59185., 60250., 61960., 63040., 76260., 77680., 79920.,
      81360., 77820., 79280., 81560., 83040., 56035., 57130., 58810., 59920.,
      57145., 58270., 59980., 61120., 69025., 70330., 72280., 73600., 88740.,
      90480., 93040., 94800., 90300., 92080., 94680., 96480., 64915., 66250.,
      68170., 69520., 66025., 67390., 69340., 70720., 42260., 43304., 44768.,
      45824., 53712., 55104., 57024., 58432., 54704., 56128., 58080., 59520.,
      38780., 39848., 41288., 42368., 39476., 40568., 42032., 43136., 48596.,
      49832., 51488., 52736., 61648., 63296., 65472., 67136., 62640., 64320.,
      66528., 68224., 44348., 45608., 47240., 48512., 45044., 46328., 47984.,
      49280.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3358., 3568., 3856., 4072., 3490., 3712., 4012., 4240., 3622., 3856.,
      4168., 4408., 3754., 4000., 4324., 4576., 3886., 4144., 4480., 4744.,
      4414., 4720., 5104., 5416., 4546., 4864., 5260., 5584., 4678., 5008.,
      5416., 5752., 4810., 5152., 5572., 5920., 4942., 5296., 5728., 6088.,
      5470., 5872., 6352., 6760., 5602., 6016., 6508., 6928., 5734., 6160.,
      6664., 7096., 5866., 6304., 6820., 7264., 5998., 6448., 6976., 7432.,
      6526., 7024., 7600., 8104., 6658., 7168., 7756., 8272., 6790., 7312.,
      7912., 8440., 6922., 7456., 8068., 8608., 7054., 7600., 8224., 8776.,
      7582., 8176., 8848., 9448., 7714., 8320., 9004., 9616., 7846., 8464.,
      9160., 9784., 7978., 8608., 9316., 9952., 8110., 8752., 9472., 10120.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98260.,  99112.,  99964.,  100816., 102880., 103744., 104608., 105472.,
      126768., 127904., 129040., 130176., 132864., 134016., 135168., 136320.,
      129744., 130912., 132080., 133248., 135968., 137152., 138336., 139520.,
      93580.,  94456.,  95332.,  96208.,  98200.,  99088.,  99976.,  100864.,
      95716.,  96616.,  97516.,  98416.,  100432., 101344., 102256., 103168.,
      117305., 118370., 119435., 120500., 122840., 123920., 125000., 126080.,
      151100., 152520., 153940., 155360., 158400., 159840., 161280., 162720.,
      154180., 155640., 157100., 158560., 161640., 163120., 164600., 166080.,
      110975., 112070., 113165., 114260., 116510., 117620., 118730., 119840.,
      113165., 114290., 115415., 116540., 118820., 119960., 121100., 122240.,
      136745., 138050., 139355., 140660., 143240., 144560., 145880., 147200.,
      175740., 177480., 179220., 180960., 184320., 186080., 187840., 189600.,
      178820., 180600., 182380., 184160., 187560., 189360., 191160., 192960.,
      128495., 129830., 131165., 132500., 134990., 136340., 137690., 139040.,
      130685., 132050., 133415., 134780., 137300., 138680., 140060., 141440.,
      83476.,  84520.,  85564.,  86608.,  88480.,  89536.,  90592.,  91648.,
      106032., 107424., 108816., 110208., 112640., 114048., 115456., 116864.,
      107984., 109408., 110832., 112256., 114720., 116160., 117600., 119040.,
      76492.,  77560.,  78628.,  79696.,  81496.,  82576.,  83656.,  84736.,
      77860.,  78952.,  80044.,  81136.,  82960.,  84064.,  85168.,  86272.,
      95956.,  97192.,  98428.,  99664.,  101728., 102976., 104224., 105472.,
      121648., 123296., 124944., 126592., 129280., 130944., 132608., 134272.,
      123600., 125280., 126960., 128640., 131360., 133056., 134752., 136448.,
      87436.,  88696.,  89956.,  91216.,  93208.,  94480.,  95752.,  97024.,
      88804.,  90088.,  91372.,  92656.,  94672.,  95968.,  97264.,  98560.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6506.,  6716.,  6926.,  7136.,  7496.,  7712.,  7928.,  8144.,  6758.,
      6980.,  7202.,  7424.,  7796.,  8024.,  8252.,  8480.,  7010.,  7244.,
      7478.,  7712.,  8096.,  8336.,  8576.,  8816.,  7262.,  7508.,  7754.,
      8000.,  8396.,  8648.,  8900.,  9152.,  7514.,  7772.,  8030.,  8288.,
      8696.,  8960.,  9224.,  9488.,  8522.,  8828.,  9134.,  9440.,  9896.,
      10208., 10520., 10832., 8774.,  9092.,  9410.,  9728.,  10196., 10520.,
      10844., 11168., 9026.,  9356.,  9686.,  10016., 10496., 10832., 11168.,
      11504., 9278.,  9620.,  9962.,  10304., 10796., 11144., 11492., 11840.,
      9530.,  9884.,  10238., 10592., 11096., 11456., 11816., 12176., 10538.,
      10940., 11342., 11744., 12296., 12704., 13112., 13520., 10790., 11204.,
      11618., 12032., 12596., 13016., 13436., 13856., 11042., 11468., 11894.,
      12320., 12896., 13328., 13760., 14192., 11294., 11732., 12170., 12608.,
      13196., 13640., 14084., 14528., 11546., 11996., 12446., 12896., 13496.,
      13952., 14408., 14864., 12554., 13052., 13550., 14048., 14696., 15200.,
      15704., 16208., 12806., 13316., 13826., 14336., 14996., 15512., 16028.,
      16544., 13058., 13580., 14102., 14624., 15296., 15824., 16352., 16880.,
      13310., 13844., 14378., 14912., 15596., 16136., 16676., 17216., 13562.,
      14108., 14654., 15200., 15896., 16448., 17000., 17552., 14570., 15164.,
      15758., 16352., 17096., 17696., 18296., 18896., 14822., 15428., 16034.,
      16640., 17396., 18008., 18620., 19232., 15074., 15692., 16310., 16928.,
      17696., 18320., 18944., 19568., 15326., 15956., 16586., 17216., 17996.,
      18632., 19268., 19904., 15578., 16220., 16862., 17504., 18296., 18944.,
      19592., 20240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      98524.,  100816., 103132., 105472., 127152., 130176., 133232., 136320.,
      130160., 133248., 136368., 139520., 93916.,  96208.,  98524.,  100864.,
      96076.,  98416.,  100780., 103168., 117755., 120500., 123275., 126080.,
      151740., 155360., 159020., 162720., 154860., 158560., 162300., 166080.,
      111515., 114260., 117035., 119840., 113735., 116540., 119375., 122240.,
      137435., 140660., 143915., 147200., 176700., 180960., 185260., 189600.,
      179820., 184160., 188540., 192960., 129275., 132500., 135755., 139040.,
      131495., 134780., 138095., 141440., 84124.,  86608.,  89116.,  91648.,
      106928., 110208., 113520., 116864., 108912., 112256., 115632., 119040.,
      77212.,  79696.,  82204.,  84736.,  78604.,  81136.,  83692.,  86272.,
      96796.,  99664.,  102556., 105472., 122800., 126592., 130416., 134272.,
      124784., 128640., 132528., 136448., 88348.,  91216.,  94108.,  97024.,
      89740.,  92656.,  95596.,  98560.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6650.,  7136.,  7634.,  8144.,  6914.,  7424.,  7946.,  8480.,  7178.,
      7712.,  8258.,  8816.,  7442.,  8000.,  8570.,  9152.,  7706.,  8288.,
      8882.,  9488.,  8762.,  9440.,  10130., 10832., 9026.,  9728.,  10442.,
      11168., 9290.,  10016., 10754., 11504., 9554.,  10304., 11066., 11840.,
      9818.,  10592., 11378., 12176., 10874., 11744., 12626., 13520., 11138.,
      12032., 12938., 13856., 11402., 12320., 13250., 14192., 11666., 12608.,
      13562., 14528., 11930., 12896., 13874., 14864., 12986., 14048., 15122.,
      16208., 13250., 14336., 15434., 16544., 13514., 14624., 15746., 16880.,
      13778., 14912., 16058., 17216., 14042., 15200., 16370., 17552., 15098.,
      16352., 17618., 18896., 15362., 16640., 17930., 19232., 15626., 16928.,
      18242., 19568., 15890., 17216., 18554., 19904., 16154., 17504., 18866.,
      20240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      195356., 197048., 199928., 201632., 204548., 206264., 209216., 210944.,
      252048., 254304., 258080., 260352., 264176., 266464., 270336., 272640.,
      258000., 260320., 264160., 266496., 270384., 272736., 276672., 279040.,
      186092., 187832., 190664., 192416., 195284., 197048., 199952., 201728.,
      190364., 192152., 195032., 196832., 199748., 201560., 204512., 206336.,
      233395., 235510., 238870., 241000., 244405., 246550., 250000., 252160.,
      300660., 303480., 307880., 310720., 315180., 318040., 322560., 325440.,
      306820., 309720., 314200., 317120., 321660., 324600., 329200., 332160.,
      220855., 223030., 226330., 228520., 231865., 234070., 237460., 239680.,
      225235., 227470., 230830., 233080., 236485., 238750., 242200., 244480.,
      272275., 274870., 278710., 281320., 285205., 287830., 291760., 294400.,
      349940., 353400., 358440., 361920., 367020., 370520., 375680., 379200.,
      356100., 359640., 364760., 368320., 373500., 377080., 382320., 385920.,
      255895., 258550., 262330., 265000., 268825., 271510., 275380., 278080.,
      260275., 262990., 266830., 269560., 273445., 276190., 280120., 282880.,
      166172., 168248., 171128., 173216., 176132., 178232., 181184., 183296.,
      211088., 213856., 217632., 220416., 224240., 227040., 230912., 233728.,
      214992., 217824., 221664., 224512., 228400., 231264., 235200., 238080.,
      152300., 154424., 157256., 159392., 162260., 164408., 167312., 169472.,
      155036., 157208., 160088., 162272., 165188., 167384., 170336., 172544.,
      191132., 193592., 196856., 199328., 202628., 205112., 208448., 210944.,
      242320., 245600., 249888., 253184., 257520., 260832., 265216., 268544.,
      246224., 249568., 253920., 257280., 261680., 265056., 269504., 272896.,
      174188., 176696., 179912., 182432., 185684., 188216., 191504., 194048.,
      176924., 179480., 182744., 185312., 188612., 191192., 194528., 197120.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12886., 13300., 13852., 14272., 14842., 15268., 15856., 16288., 13390.,
      13828., 14404., 14848., 15442., 15892., 16504., 16960., 13894., 14356.,
      14956., 15424., 16042., 16516., 17152., 17632., 14398., 14884., 15508.,
      16000., 16642., 17140., 17800., 18304., 14902., 15412., 16060., 16576.,
      17242., 17764., 18448., 18976., 16918., 17524., 18268., 18880., 19642.,
      20260., 21040., 21664., 17422., 18052., 18820., 19456., 20242., 20884.,
      21688., 22336., 17926., 18580., 19372., 20032., 20842., 21508., 22336.,
      23008., 18430., 19108., 19924., 20608., 21442., 22132., 22984., 23680.,
      18934., 19636., 20476., 21184., 22042., 22756., 23632., 24352., 20950.,
      21748., 22684., 23488., 24442., 25252., 26224., 27040., 21454., 22276.,
      23236., 24064., 25042., 25876., 26872., 27712., 21958., 22804., 23788.,
      24640., 25642., 26500., 27520., 28384., 22462., 23332., 24340., 25216.,
      26242., 27124., 28168., 29056., 22966., 23860., 24892., 25792., 26842.,
      27748., 28816., 29728., 24982., 25972., 27100., 28096., 29242., 30244.,
      31408., 32416., 25486., 26500., 27652., 28672., 29842., 30868., 32056.,
      33088., 25990., 27028., 28204., 29248., 30442., 31492., 32704., 33760.,
      26494., 27556., 28756., 29824., 31042., 32116., 33352., 34432., 26998.,
      28084., 29308., 30400., 31642., 32740., 34000., 35104., 29014., 30196.,
      31516., 32704., 34042., 35236., 36592., 37792., 29518., 30724., 32068.,
      33280., 34642., 35860., 37240., 38464., 30022., 31252., 32620., 33856.,
      35242., 36484., 37888., 39136., 30526., 31780., 33172., 34432., 35842.,
      37108., 38536., 39808., 31030., 32308., 33724., 35008., 36442., 37732.,
      39184., 40480.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      389020., 390712., 392404., 394096., 398152., 399856., 401560., 403264.,
      407380., 409096., 410812., 412528., 416704., 418432., 420160., 421888.,
      501840., 504096., 506352., 508608., 513888., 516160., 518432., 520704.,
      526064., 528352., 530640., 532928., 538368., 540672., 542976., 545280.,
      513680., 516000., 518320., 520640., 525984., 528320., 530656., 532992.,
      538416., 540768., 543120., 545472., 550976., 553344., 555712., 558080.,
      370444., 372184., 373924., 375664., 379576., 381328., 383080., 384832.,
      388804., 390568., 392332., 394096., 398128., 399904., 401680., 403456.,
      378940., 380728., 382516., 384304., 388264., 390064., 391864., 393664.,
      397684., 399496., 401308., 403120., 407200., 409024., 410848., 412672.,
      464675., 466790., 468905., 471020., 475610., 477740., 479870., 482000.,
      486665., 488810., 490955., 493100., 497840., 500000., 502160., 504320.,
      598500., 601320., 604140., 606960., 612920., 615760., 618600., 621440.,
      627500., 630360., 633220., 636080., 642240., 645120., 648000., 650880.,
      610740., 613640., 616540., 619440., 625480., 628400., 631320., 634240.,
      640380., 643320., 646260., 649200., 655440., 658400., 661360., 664320.,
      439535., 441710., 443885., 446060., 450470., 452660., 454850., 457040.,
      461525., 463730., 465935., 468140., 472700., 474920., 477140., 479360.,
      448235., 450470., 452705., 454940., 459410., 461660., 463910., 466160.,
      470705., 472970., 475235., 477500., 482120., 484400., 486680., 488960.,
      541955., 544550., 547145., 549740., 554810., 557420., 560030., 562640.,
      567785., 570410., 573035., 575660., 580880., 583520., 586160., 588800.,
      696420., 699880., 703340., 706800., 713400., 716880., 720360., 723840.,
      730540., 734040., 737540., 741040., 747840., 751360., 754880., 758400.,
      708660., 712200., 715740., 719280., 725960., 729520., 733080., 736640.,
      743420., 747000., 750580., 754160., 761040., 764640., 768240., 771840.,
      509135., 511790., 514445., 517100., 521990., 524660., 527330., 530000.,
      534965., 537650., 540335., 543020., 548060., 550760., 553460., 556160.,
      517835., 520550., 523265., 525980., 530930., 533660., 536390., 539120.,
      544145., 546890., 549635., 552380., 557480., 560240., 563000., 565760.,
      330268., 332344., 334420., 336496., 340168., 342256., 344344., 346432.,
      350164., 352264., 354364., 356464., 360256., 362368., 364480., 366592.,
      419408., 422176., 424944., 427712., 432480., 435264., 438048., 440832.,
      445680., 448480., 451280., 454080., 459008., 461824., 464640., 467456.,
      427152., 429984., 432816., 435648., 440480., 443328., 446176., 449024.,
      453936., 456800., 459664., 462528., 467520., 470400., 473280., 476160.,
      302476., 304600., 306724., 308848., 312376., 314512., 316648., 318784.,
      322372., 324520., 326668., 328816., 332464., 334624., 336784., 338944.,
      307900., 310072., 312244., 314416., 317992., 320176., 322360., 324544.,
      328180., 330376., 332572., 334768., 338464., 340672., 342880., 345088.,
      379804., 382264., 384724., 387184., 391240., 393712., 396184., 398656.,
      402772., 405256., 407740., 410224., 414400., 416896., 419392., 421888.,
      481360., 484640., 487920., 491200., 496480., 499776., 503072., 506368.,
      511728., 515040., 518352., 521664., 527104., 530432., 533760., 537088.,
      489104., 492448., 495792., 499136., 504480., 507840., 511200., 514560.,
      519984., 523360., 526736., 530112., 535616., 539008., 542400., 545792.,
      345868., 348376., 350884., 353392., 357304., 359824., 362344., 364864.,
      368836., 371368., 373900., 376432., 380464., 383008., 385552., 388096.,
      351292., 353848., 356404., 358960., 362920., 365488., 368056., 370624.,
      374644., 377224., 379804., 382384., 386464., 389056., 391648., 394240.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25358., 25772., 26186., 26600., 27284., 27704., 28124., 28544., 29258.,
      29684., 30110., 30536., 31280., 31712., 32144., 32576., 26342., 26780.,
      27218., 27656., 28364., 28808., 29252., 29696., 30434., 30884., 31334.,
      31784., 32552., 33008., 33464., 33920., 27326., 27788., 28250., 28712.,
      29444., 29912., 30380., 30848., 31610., 32084., 32558., 33032., 33824.,
      34304., 34784., 35264., 28310., 28796., 29282., 29768., 30524., 31016.,
      31508., 32000., 32786., 33284., 33782., 34280., 35096., 35600., 36104.,
      36608., 29294., 29804., 30314., 30824., 31604., 32120., 32636., 33152.,
      33962., 34484., 35006., 35528., 36368., 36896., 37424., 37952., 33230.,
      33836., 34442., 35048., 35924., 36536., 37148., 37760., 38666., 39284.,
      39902., 40520., 41456., 42080., 42704., 43328., 34214., 34844., 35474.,
      36104., 37004., 37640., 38276., 38912., 39842., 40484., 41126., 41768.,
      42728., 43376., 44024., 44672., 35198., 35852., 36506., 37160., 38084.,
      38744., 39404., 40064., 41018., 41684., 42350., 43016., 44000., 44672.,
      45344., 46016., 36182., 36860., 37538., 38216., 39164., 39848., 40532.,
      41216., 42194., 42884., 43574., 44264., 45272., 45968., 46664., 47360.,
      37166., 37868., 38570., 39272., 40244., 40952., 41660., 42368., 43370.,
      44084., 44798., 45512., 46544., 47264., 47984., 48704., 41102., 41900.,
      42698., 43496., 44564., 45368., 46172., 46976., 48074., 48884., 49694.,
      50504., 51632., 52448., 53264., 54080., 42086., 42908., 43730., 44552.,
      45644., 46472., 47300., 48128., 49250., 50084., 50918., 51752., 52904.,
      53744., 54584., 55424., 43070., 43916., 44762., 45608., 46724., 47576.,
      48428., 49280., 50426., 51284., 52142., 53000., 54176., 55040., 55904.,
      56768., 44054., 44924., 45794., 46664., 47804., 48680., 49556., 50432.,
      51602., 52484., 53366., 54248., 55448., 56336., 57224., 58112., 45038.,
      45932., 46826., 47720., 48884., 49784., 50684., 51584., 52778., 53684.,
      54590., 55496., 56720., 57632., 58544., 59456., 48974., 49964., 50954.,
      51944., 53204., 54200., 55196., 56192., 57482., 58484., 59486., 60488.,
      61808., 62816., 63824., 64832., 49958., 50972., 51986., 53000., 54284.,
      55304., 56324., 57344., 58658., 59684., 60710., 61736., 63080., 64112.,
      65144., 66176., 50942., 51980., 53018., 54056., 55364., 56408., 57452.,
      58496., 59834., 60884., 61934., 62984., 64352., 65408., 66464., 67520.,
      51926., 52988., 54050., 55112., 56444., 57512., 58580., 59648., 61010.,
      62084., 63158., 64232., 65624., 66704., 67784., 68864., 52910., 53996.,
      55082., 56168., 57524., 58616., 59708., 60800., 62186., 63284., 64382.,
      65480., 66896., 68000., 69104., 70208., 56846., 58028., 59210., 60392.,
      61844., 63032., 64220., 65408., 66890., 68084., 69278., 70472., 71984.,
      73184., 74384., 75584., 57830., 59036., 60242., 61448., 62924., 64136.,
      65348., 66560., 68066., 69284., 70502., 71720., 73256., 74480., 75704.,
      76928., 58814., 60044., 61274., 62504., 64004., 65240., 66476., 67712.,
      69242., 70484., 71726., 72968., 74528., 75776., 77024., 78272., 59798.,
      61052., 62306., 63560., 65084., 66344., 67604., 68864., 70418., 71684.,
      72950., 74216., 75800., 77072., 78344., 79616., 60782., 62060., 63338.,
      64616., 66164., 67448., 68732., 70016., 71594., 72884., 74174., 75464.,
      77072., 78368., 79664., 80960.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13560., 16530., 16840., 13080., 13320., 16200., 19725., 20050., 15550.,
      15800., 18900., 22975., 23300., 18050., 18300., 11720., 14130., 14340.,
      11000., 11160., 13480., 16230., 16440., 12600., 12760.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1407., 1452., 1497., 1542., 1587., 1857., 1902., 1947., 1992.,
      2037., 2307., 2352., 2397., 2442., 2487., 2757., 2802., 2847.,
      2892., 2937., 3207., 3252., 3297., 3342., 3387.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26400., 27120., 32160., 33060., 32760., 33680., 25424., 26160., 25888.,
      26640., 31500., 32400., 38325., 39450., 38950., 40100., 30180., 31100.,
      30660., 31600., 36700., 37800., 44575., 45950., 45200., 46600., 34980.,
      36100., 35460., 36600., 22560., 23440., 27160., 28260., 27560., 28680.,
      21104., 22000., 21408., 22320., 25920., 26960., 31160., 32460., 31560.,
      32880., 24144., 25200., 24448., 25520.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2607., 2814., 2688., 2904., 2769., 2994., 2850., 3084., 2931., 3174.,
      3417., 3714., 3498., 3804., 3579., 3894., 3660., 3984., 3741., 4074.,
      4227., 4614., 4308., 4704., 4389., 4794., 4470., 4884., 4551., 4974.,
      5037., 5514., 5118., 5604., 5199., 5694., 5280., 5784., 5361., 5874.,
      5847., 6414., 5928., 6504., 6009., 6594., 6090., 6684., 6171., 6774.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      52080., 52800., 53520., 54240., 63420., 64320., 65220., 66120., 64600.,
      65520., 66440., 67360., 50112., 50848., 51584., 52320., 51024., 51776.,
      52528., 53280., 62100., 63000., 63900., 64800., 75525., 76650., 77775.,
      78900., 76750., 77900., 79050., 80200., 59440., 60360., 61280., 62200.,
      60380., 61320., 62260., 63200., 72300., 73400., 74500., 75600., 87775.,
      89150., 90525., 91900., 89000., 90400., 91800., 93200., 68840., 69960.,
      71080., 72200., 69780., 70920., 72060., 73200., 44240., 45120., 46000.,
      46880., 53220., 54320., 55420., 56520., 54000., 55120., 56240., 57360.,
      41312., 42208., 43104., 44000., 41904., 42816., 43728., 44640., 50800.,
      51840., 52880., 53920., 61020., 62320., 63620., 64920., 61800., 63120.,
      64440., 65760., 47232., 48288., 49344., 50400., 47824., 48896., 49968.,
      51040.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5007.,  5214.,  5421.,  5628.,  5160.,  5376.,  5592.,  5808.,  5313.,
      5538.,  5763.,  5988.,  5466.,  5700.,  5934.,  6168.,  5619.,  5862.,
      6105.,  6348.,  6537.,  6834.,  7131.,  7428.,  6690.,  6996.,  7302.,
      7608.,  6843.,  7158.,  7473.,  7788.,  6996.,  7320.,  7644.,  7968.,
      7149.,  7482.,  7815.,  8148.,  8067.,  8454.,  8841.,  9228.,  8220.,
      8616.,  9012.,  9408.,  8373.,  8778.,  9183.,  9588.,  8526.,  8940.,
      9354.,  9768.,  8679.,  9102.,  9525.,  9948.,  9597.,  10074., 10551.,
      11028., 9750.,  10236., 10722., 11208., 9903.,  10398., 10893., 11388.,
      10056., 10560., 11064., 11568., 10209., 10722., 11235., 11748., 11127.,
      11694., 12261., 12828., 11280., 11856., 12432., 13008., 11433., 12018.,
      12603., 13188., 11586., 12180., 12774., 13368., 11739., 12342., 12945.,
      13548.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      52304., 54240., 63720., 66120., 64920., 67360., 50384., 52320., 51312.,
      53280., 62480., 64800., 76025., 78900., 77275., 80200., 59880., 62200.,
      60840., 63200., 72880., 75600., 88525., 91900., 89775., 93200., 69480.,
      72200., 70440., 73200., 44784., 46880., 53920., 56520., 54720., 57360.,
      41904., 44000., 42512., 44640., 51504., 53920., 61920., 64920., 62720.,
      65760., 47984., 50400., 48592., 51040.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5133.,  5628.,  5295.,  5808.,  5457.,  5988.,  5619.,  6168.,  5781.,
      6348.,  6753.,  7428.,  6915.,  7608.,  7077.,  7788.,  7239.,  7968.,
      7401.,  8148.,  8373.,  9228.,  8535.,  9408.,  8697.,  9588.,  8859.,
      9768.,  9021.,  9948.,  9993.,  11028., 10155., 11208., 10317., 11388.,
      10479., 11568., 10641., 11748., 11613., 12828., 11775., 13008., 11937.,
      13188., 12099., 13368., 12261., 13548.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      103184., 104608., 107040., 108480., 125660., 127440., 130440., 132240.,
      128020., 129840., 132880., 134720., 99312.,  100768., 103168., 104640.,
      101136., 102624., 105056., 106560., 123180., 124960., 127800., 129600.,
      149825., 152050., 155550., 157800., 152275., 154550., 158100., 160400.,
      117940., 119760., 122560., 124400., 119820., 121680., 124520., 126400.,
      143580., 145760., 149000., 151200., 174325., 177050., 181050., 183800.,
      176775., 179550., 183600., 186400., 136740., 138960., 142160., 144400.,
      138620., 140880., 144120., 146400., 87824.,  89568.,  92000.,  93760.,
      105660., 107840., 110840., 113040., 107220., 109440., 112480., 114720.,
      82032.,  83808.,  86208.,  88000.,  83216.,  85024.,  87456.,  89280.,
      100944., 103008., 105760., 107840., 121260., 123840., 127240., 129840.,
      122820., 125440., 128880., 131520., 93872.,  95968.,  98688.,  100800.,
      95056.,  97184.,  99936.,  102080.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9861.,  10266., 10842., 11256., 10167., 10590., 11184., 11616., 10473.,
      10914., 11526., 11976., 10779., 11238., 11868., 12336., 11085., 11562.,
      12210., 12696., 12921., 13506., 14262., 14856., 13227., 13830., 14604.,
      15216., 13533., 14154., 14946., 15576., 13839., 14478., 15288., 15936.,
      14145., 14802., 15630., 16296., 15981., 16746., 17682., 18456., 16287.,
      17070., 18024., 18816., 16593., 17394., 18366., 19176., 16899., 17718.,
      18708., 19536., 17205., 18042., 19050., 19896., 19041., 19986., 21102.,
      22056., 19347., 20310., 21444., 22416., 19653., 20634., 21786., 22776.,
      19959., 20958., 22128., 23136., 20265., 21282., 22470., 23496., 22101.,
      23226., 24522., 25656., 22407., 23550., 24864., 26016., 22713., 23874.,
      25206., 26376., 23019., 24198., 25548., 26736., 23325., 24522., 25890.,
      27096.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      204944., 206368., 207792., 209216., 212640., 214080., 215520., 216960.,
      249540., 251320., 253100., 254880., 259080., 260880., 262680., 264480.,
      254220., 256040., 257860., 259680., 263920., 265760., 267600., 269440.,
      197168., 198624., 200080., 201536., 204864., 206336., 207808., 209280.,
      200784., 202272., 203760., 205248., 208608., 210112., 211616., 213120.,
      244580., 246360., 248140., 249920., 253800., 255600., 257400., 259200.,
      297425., 299650., 301875., 304100., 308850., 311100., 313350., 315600.,
      302275., 304550., 306825., 309100., 313900., 316200., 318500., 320800.,
      234060., 235880., 237700., 239520., 243280., 245120., 246960., 248800.,
      237780., 239640., 241500., 243360., 247160., 249040., 250920., 252800.,
      284980., 287160., 289340., 291520., 295800., 298000., 300200., 302400.,
      345925., 348650., 351375., 354100., 359350., 362100., 364850., 367600.,
      350775., 353550., 356325., 359100., 364400., 367200., 370000., 372800.,
      271260., 273480., 275700., 277920., 282080., 284320., 286560., 288800.,
      274980., 277240., 279500., 281760., 285960., 288240., 290520., 292800.,
      173904., 175648., 177392., 179136., 182240., 184000., 185760., 187520.,
      209140., 211320., 213500., 215680., 219480., 221680., 223880., 226080.,
      212220., 214440., 216660., 218880., 222720., 224960., 227200., 229440.,
      162288., 164064., 165840., 167616., 170624., 172416., 174208., 176000.,
      164624., 166432., 168240., 170048., 173088., 174912., 176736., 178560.,
      199824., 201888., 203952., 206016., 209440., 211520., 213600., 215680.,
      239940., 242520., 245100., 247680., 251880., 254480., 257080., 259680.,
      243020., 245640., 248260., 250880., 255120., 257760., 260400., 263040.,
      185648., 187744., 189840., 191936., 195264., 197376., 199488., 201600.,
      187984., 190112., 192240., 194368., 197728., 199872., 202016., 204160.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19317., 19722., 20127., 20532., 21270., 21684., 22098., 22512., 19911.,
      20334., 20757., 21180., 21936., 22368., 22800., 23232., 20505., 20946.,
      21387., 21828., 22602., 23052., 23502., 23952., 21099., 21558., 22017.,
      22476., 23268., 23736., 24204., 24672., 21693., 22170., 22647., 23124.,
      23934., 24420., 24906., 25392., 25257., 25842., 26427., 27012., 27930.,
      28524., 29118., 29712., 25851., 26454., 27057., 27660., 28596., 29208.,
      29820., 30432., 26445., 27066., 27687., 28308., 29262., 29892., 30522.,
      31152., 27039., 27678., 28317., 28956., 29928., 30576., 31224., 31872.,
      27633., 28290., 28947., 29604., 30594., 31260., 31926., 32592., 31197.,
      31962., 32727., 33492., 34590., 35364., 36138., 36912., 31791., 32574.,
      33357., 34140., 35256., 36048., 36840., 37632., 32385., 33186., 33987.,
      34788., 35922., 36732., 37542., 38352., 32979., 33798., 34617., 35436.,
      36588., 37416., 38244., 39072., 33573., 34410., 35247., 36084., 37254.,
      38100., 38946., 39792., 37137., 38082., 39027., 39972., 41250., 42204.,
      43158., 44112., 37731., 38694., 39657., 40620., 41916., 42888., 43860.,
      44832., 38325., 39306., 40287., 41268., 42582., 43572., 44562., 45552.,
      38919., 39918., 40917., 41916., 43248., 44256., 45264., 46272., 39513.,
      40530., 41547., 42564., 43914., 44940., 45966., 46992., 43077., 44202.,
      45327., 46452., 47910., 49044., 50178., 51312., 43671., 44814., 45957.,
      47100., 48576., 49728., 50880., 52032., 44265., 45426., 46587., 47748.,
      49242., 50412., 51582., 52752., 44859., 46038., 47217., 48396., 49908.,
      51096., 52284., 53472., 45453., 46650., 47847., 49044., 50574., 51780.,
      52986., 54192.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      205392., 209216., 213072., 216960., 250140., 254880., 259660., 264480.,
      254860., 259680., 264540., 269440., 197712., 201536., 205392., 209280.,
      201360., 205248., 209168., 213120., 245340., 249920., 254540., 259200.,
      298425., 304100., 309825., 315600., 303325., 309100., 314925., 320800.,
      234940., 239520., 244140., 248800., 238700., 243360., 248060., 252800.,
      286140., 291520., 296940., 302400., 347425., 354100., 360825., 367600.,
      352325., 359100., 365925., 372800., 272540., 277920., 283340., 288800.,
      276300., 281760., 287260., 292800., 174992., 179136., 183312., 187520.,
      210540., 215680., 220860., 226080., 213660., 218880., 224140., 229440.,
      163472., 167616., 171792., 176000., 165840., 170048., 174288., 178560.,
      201232., 206016., 210832., 215680., 241740., 247680., 253660., 259680.,
      244860., 250880., 256940., 263040., 187152., 191936., 196752., 201600.,
      189520., 194368., 199248., 204160.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19569., 20532., 21513., 22512., 20181., 21180., 22197., 23232., 20793.,
      21828., 22881., 23952., 21405., 22476., 23565., 24672., 22017., 23124.,
      24249., 25392., 25689., 27012., 28353., 29712., 26301., 27660., 29037.,
      30432., 26913., 28308., 29721., 31152., 27525., 28956., 30405., 31872.,
      28137., 29604., 31089., 32592., 31809., 33492., 35193., 36912., 32421.,
      34140., 35877., 37632., 33033., 34788., 36561., 38352., 33645., 35436.,
      37245., 39072., 34257., 36084., 37929., 39792., 37929., 39972., 42033.,
      44112., 38541., 40620., 42717., 44832., 39153., 41268., 43401., 45552.,
      39765., 41916., 44085., 46272., 40377., 42564., 44769., 46992., 44049.,
      46452., 48873., 51312., 44661., 47100., 49557., 52032., 45273., 47748.,
      50241., 52752., 45885., 48396., 50925., 53472., 46497., 49044., 51609.,
      54192.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      407952., 410784., 415584., 418432., 423280., 426144., 431040., 433920.,
      496740., 500280., 506200., 509760., 515740., 519320., 525360., 528960.,
      506100., 509720., 515720., 519360., 525420., 529080., 535200., 538880.,
      392528., 395424., 400160., 403072., 407856., 410784., 415616., 418560.,
      399760., 402720., 407520., 410496., 415344., 418336., 423232., 426240.,
      487140., 490680., 496280., 499840., 505500., 509080., 514800., 518400.,
      592425., 596850., 603750., 608200., 615175., 619650., 626700., 631200.,
      602125., 606650., 613650., 618200., 625275., 629850., 637000., 641600.,
      466260., 469880., 475400., 479040., 484620., 488280., 493920., 497600.,
      473700., 477400., 483000., 486720., 492380., 496120., 501840., 505600.,
      567940., 572280., 578680., 583040., 589500., 593880., 600400., 604800.,
      689425., 694850., 702750., 708200., 716175., 721650., 729700., 735200.,
      699125., 704650., 712650., 718200., 726275., 731850., 740000., 745600.,
      540660., 545080., 551400., 555840., 562220., 566680., 573120., 577600.,
      548100., 552600., 559000., 563520., 569980., 574520., 581040., 585600.,
      346512., 349984., 354784., 358272., 363120., 366624., 371520., 375040.,
      416740., 421080., 427000., 431360., 437340., 441720., 447760., 452160.,
      422900., 427320., 433320., 437760., 443820., 448280., 454400., 458880.,
      323408., 326944., 331680., 335232., 340016., 343584., 348416., 352000.,
      328080., 331680., 336480., 340096., 344944., 348576., 353472., 357120.,
      398352., 402464., 407904., 412032., 417520., 421664., 427200., 431360.,
      478340., 483480., 490200., 495360., 502140., 507320., 514160., 519360.,
      484500., 489720., 496520., 501760., 508620., 513880., 520800., 526080.,
      370128., 374304., 379680., 383872., 389296., 393504., 398976., 403200.,
      374800., 379040., 384480., 388736., 394224., 398496., 404032., 408320.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38337., 39138., 40254., 41064., 42207.,  43026.,  44196.,  45024.,
      39525., 40362., 41514., 42360., 43539.,  44394.,  45600.,  46464.,
      40713., 41586., 42774., 43656., 44871.,  45762.,  47004.,  47904.,
      41901., 42810., 44034., 44952., 46203.,  47130.,  48408.,  49344.,
      43089., 44034., 45294., 46248., 47535.,  48498.,  49812.,  50784.,
      50217., 51378., 52854., 54024., 55527.,  56706.,  58236.,  59424.,
      51405., 52602., 54114., 55320., 56859.,  58074.,  59640.,  60864.,
      52593., 53826., 55374., 56616., 58191.,  59442.,  61044.,  62304.,
      53781., 55050., 56634., 57912., 59523.,  60810.,  62448.,  63744.,
      54969., 56274., 57894., 59208., 60855.,  62178.,  63852.,  65184.,
      62097., 63618., 65454., 66984., 68847.,  70386.,  72276.,  73824.,
      63285., 64842., 66714., 68280., 70179.,  71754.,  73680.,  75264.,
      64473., 66066., 67974., 69576., 71511.,  73122.,  75084.,  76704.,
      65661., 67290., 69234., 70872., 72843.,  74490.,  76488.,  78144.,
      66849., 68514., 70494., 72168., 74175.,  75858.,  77892.,  79584.,
      73977., 75858., 78054., 79944., 82167.,  84066.,  86316.,  88224.,
      75165., 77082., 79314., 81240., 83499.,  85434.,  87720.,  89664.,
      76353., 78306., 80574., 82536., 84831.,  86802.,  89124.,  91104.,
      77541., 79530., 81834., 83832., 86163.,  88170.,  90528.,  92544.,
      78729., 80754., 83094., 85128., 87495.,  89538.,  91932.,  93984.,
      85857., 88098., 90654., 92904., 95487.,  97746.,  100356., 102624.,
      87045., 89322., 91914., 94200., 96819.,  99114.,  101760., 104064.,
      88233., 90546., 93174., 95496., 98151.,  100482., 103164., 105504.,
      89421., 91770., 94434., 96792., 99483.,  101850., 104568., 106944.,
      90609., 92994., 95694., 98088., 100815., 103218., 105972., 108384.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      813072.,  815904.,  818736.,  821568.,  828320.,  831168.,  834016.,
      836864.,  843696.,  846560.,  849424.,  852288.,  859200.,  862080.,
      864960.,  867840.,  989940.,  993480.,  997020.,  1000560., 1008840.,
      1012400., 1015960., 1019520., 1027900., 1031480., 1035060., 1038640.,
      1047120., 1050720., 1054320., 1057920., 1008580., 1012200., 1015820.,
      1019440., 1027800., 1031440., 1035080., 1038720., 1047180., 1050840.,
      1054500., 1058160., 1066720., 1070400., 1074080., 1077760., 782160.,
      785056.,  787952.,  790848.,  797408.,  800320.,  803232.,  806144.,
      812784.,  815712.,  818640.,  821568.,  828288.,  831232.,  834176.,
      837120.,  796560.,  799520.,  802480.,  805440.,  812064.,  815040.,
      818016.,  820992.,  827696.,  830688.,  833680.,  836672.,  843456.,
      846464.,  849472.,  852480.,  970740.,  974280.,  977820.,  981360.,
      989000.,  992560.,  996120.,  999680.,  1007420., 1011000., 1014580.,
      1018160., 1026000., 1029600., 1033200., 1036800., 1180425., 1184850.,
      1189275., 1193700., 1203050., 1207500., 1211950., 1216400., 1225875.,
      1230350., 1234825., 1239300., 1248900., 1253400., 1257900., 1262400.,
      1199725., 1204250., 1208775., 1213300., 1222750., 1227300., 1231850.,
      1236400., 1245975., 1250550., 1255125., 1259700., 1269400., 1274000.,
      1278600., 1283200., 928900.,  932520.,  936140.,  939760.,  947160.,
      950800.,  954440.,  958080.,  965580.,  969240.,  972900.,  976560.,
      984160.,  987840.,  991520.,  995200.,  943700.,  947400.,  951100.,
      954800.,  962280.,  966000.,  969720.,  973440.,  981020.,  984760.,
      988500.,  992240.,  999920.,  1003680., 1007440., 1011200., 1131540.,
      1135880., 1140220., 1144560., 1153000., 1157360., 1161720., 1166080.,
      1174620., 1179000., 1183380., 1187760., 1196400., 1200800., 1205200.,
      1209600., 1373425., 1378850., 1384275., 1389700., 1400050., 1405500.,
      1410950., 1416400., 1426875., 1432350., 1437825., 1443300., 1453900.,
      1459400., 1464900., 1470400., 1392725., 1398250., 1403775., 1409300.,
      1419750., 1425300., 1430850., 1436400., 1446975., 1452550., 1458125.,
      1463700., 1474400., 1480000., 1485600., 1491200., 1076900., 1081320.,
      1085740., 1090160., 1098360., 1102800., 1107240., 1111680., 1119980.,
      1124440., 1128900., 1133360., 1141760., 1146240., 1150720., 1155200.,
      1091700., 1096200., 1100700., 1105200., 1113480., 1118000., 1122520.,
      1127040., 1135420., 1139960., 1144500., 1149040., 1157520., 1162080.,
      1166640., 1171200., 689552.,  693024.,  696496.,  699968.,  706080.,
      709568.,  713056.,  716544.,  722736.,  726240.,  729744.,  733248.,
      739520.,  743040.,  746560.,  750080.,  829140.,  833480.,  837820.,
      842160.,  849640.,  854000.,  858360.,  862720.,  870300.,  874680.,
      879060.,  883440.,  891120.,  895520.,  899920.,  904320.,  841380.,
      845800.,  850220.,  854640.,  862200.,  866640.,  871080.,  875520.,
      883180.,  887640.,  892100.,  896560.,  904320.,  908800.,  913280.,
      917760.,  643280.,  646816.,  650352.,  653888.,  659808.,  663360.,
      666912.,  670464.,  676464.,  680032.,  683600.,  687168.,  693248.,
      696832.,  700416.,  704000.,  652560.,  656160.,  659760.,  663360.,
      669344.,  672960.,  676576.,  680192.,  686256.,  689888.,  693520.,
      697152.,  703296.,  706944.,  710592.,  714240.,  792592.,  796704.,
      800816.,  804928.,  811680.,  815808.,  819936.,  824064.,  830896.,
      835040.,  839184.,  843328.,  850240.,  854400.,  858560.,  862720.,
      951540.,  956680.,  961820.,  966960.,  975240.,  980400.,  985560.,
      990720.,  999100.,  1004280., 1009460., 1014640., 1023120., 1028320.,
      1033520., 1038720., 963780.,  969000.,  974220.,  979440.,  987800.,
      993040.,  998280.,  1003520., 1011980., 1017240., 1022500., 1027760.,
      1036320., 1041600., 1046880., 1052160., 736080.,  740256.,  744432.,
      748608.,  755168.,  759360.,  763552.,  767744.,  774384.,  778592.,
      782800.,  787008.,  793728.,  797952.,  802176.,  806400.,  745360.,
      749600.,  753840.,  758080.,  764704.,  768960.,  773216.,  777472.,
      784176.,  788448.,  792720.,  796992.,  803776.,  808064.,  812352.,
      816640.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75873.,  76674.,  77475.,  78276.,  79698.,  80508.,  81318.,  82128.,
      83595.,  84414.,  85233.,  86052.,  87564.,  88392.,  89220.,  90048.,
      78213.,  79050.,  79887.,  80724.,  82182.,  83028.,  83874.,  84720.,
      86223.,  87078.,  87933.,  88788.,  90336.,  91200.,  92064.,  92928.,
      80553.,  81426.,  82299.,  83172.,  84666.,  85548.,  86430.,  87312.,
      88851.,  89742.,  90633.,  91524.,  93108.,  94008.,  94908.,  95808.,
      82893.,  83802.,  84711.,  85620.,  87150.,  88068.,  88986.,  89904.,
      91479.,  92406.,  93333.,  94260.,  95880.,  96816.,  97752.,  98688.,
      85233.,  86178.,  87123.,  88068.,  89634.,  90588.,  91542.,  92496.,
      94107.,  95070.,  96033.,  96996.,  98652.,  99624.,  100596., 101568.,
      99273.,  100434., 101595., 102756., 104538., 105708., 106878., 108048.,
      109875., 111054., 112233., 113412., 115284., 116472., 117660., 118848.,
      101613., 102810., 104007., 105204., 107022., 108228., 109434., 110640.,
      112503., 113718., 114933., 116148., 118056., 119280., 120504., 121728.,
      103953., 105186., 106419., 107652., 109506., 110748., 111990., 113232.,
      115131., 116382., 117633., 118884., 120828., 122088., 123348., 124608.,
      106293., 107562., 108831., 110100., 111990., 113268., 114546., 115824.,
      117759., 119046., 120333., 121620., 123600., 124896., 126192., 127488.,
      108633., 109938., 111243., 112548., 114474., 115788., 117102., 118416.,
      120387., 121710., 123033., 124356., 126372., 127704., 129036., 130368.,
      122673., 124194., 125715., 127236., 129378., 130908., 132438., 133968.,
      136155., 137694., 139233., 140772., 143004., 144552., 146100., 147648.,
      125013., 126570., 128127., 129684., 131862., 133428., 134994., 136560.,
      138783., 140358., 141933., 143508., 145776., 147360., 148944., 150528.,
      127353., 128946., 130539., 132132., 134346., 135948., 137550., 139152.,
      141411., 143022., 144633., 146244., 148548., 150168., 151788., 153408.,
      129693., 131322., 132951., 134580., 136830., 138468., 140106., 141744.,
      144039., 145686., 147333., 148980., 151320., 152976., 154632., 156288.,
      132033., 133698., 135363., 137028., 139314., 140988., 142662., 144336.,
      146667., 148350., 150033., 151716., 154092., 155784., 157476., 159168.,
      146073., 147954., 149835., 151716., 154218., 156108., 157998., 159888.,
      162435., 164334., 166233., 168132., 170724., 172632., 174540., 176448.,
      148413., 150330., 152247., 154164., 156702., 158628., 160554., 162480.,
      165063., 166998., 168933., 170868., 173496., 175440., 177384., 179328.,
      150753., 152706., 154659., 156612., 159186., 161148., 163110., 165072.,
      167691., 169662., 171633., 173604., 176268., 178248., 180228., 182208.,
      153093., 155082., 157071., 159060., 161670., 163668., 165666., 167664.,
      170319., 172326., 174333., 176340., 179040., 181056., 183072., 185088.,
      155433., 157458., 159483., 161508., 164154., 166188., 168222., 170256.,
      172947., 174990., 177033., 179076., 181812., 183864., 185916., 187968.,
      169473., 171714., 173955., 176196., 179058., 181308., 183558., 185808.,
      188715., 190974., 193233., 195492., 198444., 200712., 202980., 205248.,
      171813., 174090., 176367., 178644., 181542., 183828., 186114., 188400.,
      191343., 193638., 195933., 198228., 201216., 203520., 205824., 208128.,
      174153., 176466., 178779., 181092., 184026., 186348., 188670., 190992.,
      193971., 196302., 198633., 200964., 203988., 206328., 208668., 211008.,
      176493., 178842., 181191., 183540., 186510., 188868., 191226., 193584.,
      196599., 198966., 201333., 203700., 206760., 209136., 211512., 213888.,
      178833., 181218., 183603., 185988., 188994., 191388., 193782., 196176.,
      199227., 201630., 204033., 206436., 209532., 211944., 214356., 216768.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      63270., 63999., 84168., 62190.,  62892., 68373., 69102., 90846., 67104.,
      67806., 87084., 87984., 115592., 85320., 86184., 60489., 61110., 80190.,
      59112., 59706., 64836., 65457.,  85860., 63270., 63864.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6182., 6260., 6338., 6416., 6494., 6728., 6806., 6884., 6962.,
      7040., 7274., 7352., 7430., 7508., 7586., 7820., 7898., 7976.,
      8054., 8132., 8366., 8444., 8522., 8600., 8678.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      124758., 126540., 126189., 127998., 165924., 168336., 122571., 124380.,
      123948., 125784., 134775., 136746., 136206., 138204., 179028., 181692.,
      132210., 134208., 133587., 135612., 171540., 174168., 173304., 175968.,
      227632., 231184., 167976., 170640., 169668., 172368., 119007., 120978.,
      120222., 122220., 157716., 160380., 116226., 118224., 117387., 119412.,
      127512., 129672., 128727., 130914., 168804., 171720., 124353., 126540.,
      125514., 127728.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11668., 12364., 11812., 12520., 11956., 12676., 12100., 12832., 12244.,
      12988., 12676., 13456., 12820., 13612., 12964., 13768., 13108., 13924.,
      13252., 14080., 13684., 14548., 13828., 14704., 13972., 14860., 14116.,
      15016., 14260., 15172., 14692., 15640., 14836., 15796., 14980., 15952.,
      15124., 16108., 15268., 16264., 15700., 16732., 15844., 16888., 15988.,
      17044., 16132., 17200., 16276., 17356.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      247734., 249516., 251298., 253080., 250569., 252378., 254187., 255996.,
      329436., 331848., 334260., 336672., 243333., 245142., 246951., 248760.,
      246060., 247896., 249732., 251568., 267579., 269550., 271521., 273492.,
      270414., 272412., 274410., 276408., 355392., 358056., 360720., 363384.,
      262422., 264420., 266418., 268416., 265149., 267174., 269199., 271224.,
      340452., 343080., 345708., 348336., 343944., 346608., 349272., 351936.,
      451712., 455264., 458816., 462368., 333288., 335952., 338616., 341280.,
      336636., 339336., 342036., 344736., 236043., 238014., 239985., 241956.,
      238446., 240444., 242442., 244440., 312768., 315432., 318096., 320760.,
      230454., 232452., 234450., 236448., 232749., 234774., 236799., 238824.,
      252864., 255024., 257184., 259344., 255267., 257454., 259641., 261828.,
      334692., 337608., 340524., 343440., 246519., 248706., 250893., 253080.,
      248814., 251028., 253242., 255456.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22640., 23336., 24032., 24728., 22916., 23624., 24332., 25040., 23192.,
      23912., 24632., 25352., 23468., 24200., 24932., 25664., 23744., 24488.,
      25232., 25976., 24572., 25352., 26132., 26912., 24848., 25640., 26432.,
      27224., 25124., 25928., 26732., 27536., 25400., 26216., 27032., 27848.,
      25676., 26504., 27332., 28160., 26504., 27368., 28232., 29096., 26780.,
      27656., 28532., 29408., 27056., 27944., 28832., 29720., 27332., 28232.,
      29132., 30032., 27608., 28520., 29432., 30344., 28436., 29384., 30332.,
      31280., 28712., 29672., 30632., 31592., 28988., 29960., 30932., 31904.,
      29264., 30248., 31232., 32216., 29540., 30536., 31532., 32528., 30368.,
      31400., 32432., 33464., 30644., 31688., 32732., 33776., 30920., 31976.,
      33032., 34088., 31196., 32264., 33332., 34400., 31472., 32552., 33632.,
      34712.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      248085., 253080., 250947., 255996., 329976., 336672., 243765., 248760.,
      246519., 251568., 268119., 273492., 270981., 276408., 356184., 363384.,
      263043., 268416., 265797., 271224., 341316., 348336., 344844., 351936.,
      452960., 462368., 334260., 341280., 337644., 344736., 236799., 241956.,
      239229., 244440., 313848., 320760., 231291., 236448., 233613., 238824.,
      253809., 259344., 256239., 261828., 336024., 343440., 247545., 253080.,
      249867., 255456.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23192., 24728., 23480., 25040., 23768., 25352., 24056., 25664., 24344.,
      25976., 25208., 26912., 25496., 27224., 25784., 27536., 26072., 27848.,
      26360., 28160., 27224., 29096., 27512., 29408., 27800., 29720., 28088.,
      30032., 28376., 30344., 29240., 31280., 29528., 31592., 29816., 31904.,
      30104., 32216., 30392., 32528., 31256., 33464., 31544., 33776., 31832.,
      34088., 32120., 34400., 32408., 34712.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      492633., 496170., 502596., 506160., 498303., 501894., 508374., 511992.,
      655164., 659952., 668520., 673344., 483939., 487530., 493902., 497520.,
      489393., 493038., 499464., 503136., 532323., 536238., 543042., 546984.,
      537993., 541962., 548820., 552816., 707076., 712368., 721440., 726768.,
      522117., 526086., 532836., 536832., 527571., 531594., 538398., 542448.,
      677412., 682632., 691416., 696672., 684396., 689688., 698544., 703872.,
      898864., 905920., 917632., 924736., 663228., 668520., 677232., 682560.,
      669924., 675288., 684072., 689472., 469683., 473598., 479970., 483912.,
      474489., 478458., 484884., 488880., 622404., 627696., 636192., 641520.,
      458613., 462582., 468900., 472896., 463203., 467226., 473598., 477648.,
      503325., 507618., 514368., 518688., 508131., 512478., 519282., 523656.,
      666252., 672048., 681048., 686880., 490743., 495090., 501786., 506160.,
      495333., 499734., 506484., 510912.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      45004., 46384., 48064., 49456., 45556., 46960., 48664., 50080., 46108.,
      47536., 49264., 50704., 46660., 48112., 49864., 51328., 47212., 48688.,
      50464., 51952., 48868., 50416., 52264., 53824., 49420., 50992., 52864.,
      54448., 49972., 51568., 53464., 55072., 50524., 52144., 54064., 55696.,
      51076., 52720., 54664., 56320., 52732., 54448., 56464., 58192., 53284.,
      55024., 57064., 58816., 53836., 55600., 57664., 59440., 54388., 56176.,
      58264., 60064., 54940., 56752., 58864., 60688., 56596., 58480., 60664.,
      62560., 57148., 59056., 61264., 63184., 57700., 59632., 61864., 63808.,
      58252., 60208., 62464., 64432., 58804., 60784., 63064., 65056., 60460.,
      62512., 64864., 66928., 61012., 63088., 65464., 67552., 61564., 63664.,
      66064., 68176., 62116., 64240., 66664., 68800., 62668., 64816., 67264.,
      69424.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      981729.,  985266.,  988803.,  992340.,  1001628., 1005192., 1008756.,
      1012320., 993015.,  996606.,  1000197., 1003788., 1013130., 1016748.,
      1020366., 1023984., 1305540., 1310328., 1315116., 1319904., 1332216.,
      1337040., 1341864., 1346688., 964287.,  967878.,  971469.,  975060.,
      984186.,  987804.,  991422.,  995040.,  975141.,  978786.,  982431.,
      986076.,  995256.,  998928.,  1002600., 1006272., 1060731., 1064646.,
      1068561., 1072476., 1082142., 1086084., 1090026., 1093968., 1072017.,
      1075986., 1079955., 1083924., 1093644., 1097640., 1101636., 1105632.,
      1408860., 1414152., 1419444., 1424736., 1437552., 1442880., 1448208.,
      1453536., 1040265., 1044234., 1048203., 1052172., 1061676., 1065672.,
      1069668., 1073664., 1051119., 1055142., 1059165., 1063188., 1072746.,
      1076796., 1080846., 1084896., 1349604., 1354824., 1360044., 1365264.,
      1377576., 1382832., 1388088., 1393344., 1363500., 1368792., 1374084.,
      1379376., 1391760., 1397088., 1402416., 1407744., 1790672., 1797728.,
      1804784., 1811840., 1828160., 1835264., 1842368., 1849472., 1321164.,
      1326456., 1331748., 1337040., 1349136., 1354464., 1359792., 1365120.,
      1334484., 1339848., 1345212., 1350576., 1362744., 1368144., 1373544.,
      1378944., 935451.,  939366.,  943281.,  947196.,  955998.,  959940.,
      963882.,  967824.,  945009.,  948978.,  952947.,  956916.,  965772.,
      969768.,  973764.,  977760.,  1239516., 1244808., 1250100., 1255392.,
      1267056., 1272384., 1277712., 1283040., 913257.,  917226.,  921195.,
      925164.,  933804.,  937800.,  941796.,  945792.,  922383.,  926406.,
      930429.,  934452.,  943146.,  947196.,  951246.,  955296.,  1002357.,
      1006650., 1010943., 1015236., 1024416., 1028736., 1033056., 1037376.,
      1011915., 1016262., 1020609., 1024956., 1034190., 1038564., 1042938.,
      1047312., 1326708., 1332504., 1338300., 1344096., 1356264., 1362096.,
      1367928., 1373760., 977139.,  981486.,  985833.,  990180.,  999198.,
      1003572., 1007946., 1012320., 986265.,  990666.,  995067.,  999468.,
      1008540., 1012968., 1017396., 1021824.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      88628.,  90008.,  91388.,  92768.,  94736.,  96128.,  97520.,  98912.,
      89708.,  91112.,  92516.,  93920.,  95912.,  97328.,  98744.,  100160.,
      90788.,  92216.,  93644.,  95072.,  97088.,  98528.,  99968.,  101408.,
      91868.,  93320.,  94772.,  96224.,  98264.,  99728.,  101192., 102656.,
      92948.,  94424.,  95900.,  97376.,  99440.,  100928., 102416., 103904.,
      96188.,  97736.,  99284.,  100832., 102968., 104528., 106088., 107648.,
      97268.,  98840.,  100412., 101984., 104144., 105728., 107312., 108896.,
      98348.,  99944.,  101540., 103136., 105320., 106928., 108536., 110144.,
      99428.,  101048., 102668., 104288., 106496., 108128., 109760., 111392.,
      100508., 102152., 103796., 105440., 107672., 109328., 110984., 112640.,
      103748., 105464., 107180., 108896., 111200., 112928., 114656., 116384.,
      104828., 106568., 108308., 110048., 112376., 114128., 115880., 117632.,
      105908., 107672., 109436., 111200., 113552., 115328., 117104., 118880.,
      106988., 108776., 110564., 112352., 114728., 116528., 118328., 120128.,
      108068., 109880., 111692., 113504., 115904., 117728., 119552., 121376.,
      111308., 113192., 115076., 116960., 119432., 121328., 123224., 125120.,
      112388., 114296., 116204., 118112., 120608., 122528., 124448., 126368.,
      113468., 115400., 117332., 119264., 121784., 123728., 125672., 127616.,
      114548., 116504., 118460., 120416., 122960., 124928., 126896., 128864.,
      115628., 117608., 119588., 121568., 124136., 126128., 128120., 130112.,
      118868., 120920., 122972., 125024., 127664., 129728., 131792., 133856.,
      119948., 122024., 124100., 126176., 128840., 130928., 133016., 135104.,
      121028., 123128., 125228., 127328., 130016., 132128., 134240., 136352.,
      122108., 124232., 126356., 128480., 131192., 133328., 135464., 137600.,
      123188., 125336., 127484., 129632., 132368., 134528., 136688., 138848.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      982431.,  992340.,  1002303., 1012320., 993771.,  1003788., 1013859.,
      1023984., 1306620., 1319904., 1333260., 1346688., 965151.,  975060.,
      985023.,  995040.,  976059.,  986076.,  996147.,  1006272., 1061811.,
      1072476., 1083195., 1093968., 1073151., 1083924., 1094751., 1105632.,
      1410444., 1424736., 1439100., 1453536., 1041507., 1052172., 1062891.,
      1073664., 1052415., 1063188., 1074015., 1084896., 1351332., 1365264.,
      1379268., 1393344., 1365300., 1379376., 1393524., 1407744., 1793168.,
      1811840., 1830608., 1849472., 1323108., 1337040., 1351044., 1365120.,
      1336500., 1350576., 1364724., 1378944., 936963.,  947196.,  957483.,
      967824.,  946575.,  956916.,  967311.,  977760.,  1241676., 1255392.,
      1269180., 1283040., 914931.,  925164.,  935451.,  945792.,  924111.,
      934452.,  944847.,  955296.,  1004247., 1015236., 1026279., 1037376.,
      1013859., 1024956., 1036107., 1047312., 1329372., 1344096., 1358892.,
      1373760., 979191.,  990180.,  1001223., 1012320., 988371.,  999468.,
      1010619., 1021824.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      89732.,  92768.,  95828.,  98912.,  90836.,  93920.,  97028.,  100160.,
      91940.,  95072.,  98228.,  101408., 93044.,  96224.,  99428.,  102656.,
      94148.,  97376.,  100628., 103904., 97460.,  100832., 104228., 107648.,
      98564.,  101984., 105428., 108896., 99668.,  103136., 106628., 110144.,
      100772., 104288., 107828., 111392., 101876., 105440., 109028., 112640.,
      105188., 108896., 112628., 116384., 106292., 110048., 113828., 117632.,
      107396., 111200., 115028., 118880., 108500., 112352., 116228., 120128.,
      109604., 113504., 117428., 121376., 112916., 116960., 121028., 125120.,
      114020., 118112., 122228., 126368., 115124., 119264., 123428., 127616.,
      116228., 120416., 124628., 128864., 117332., 121568., 125828., 130112.,
      120644., 125024., 129428., 133856., 121748., 126176., 130628., 135104.,
      122852., 127328., 131828., 136352., 123956., 128480., 133028., 137600.,
      125060., 129632., 134228., 138848.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1957815., 1964862., 1977606., 1984680., 1997505., 2004606., 2017512.,
      2024640., 1980387., 1987542., 2000394., 2007576., 2020509., 2027718.,
      2040732., 2047968., 2603700., 2613240., 2630232., 2639808., 2656908.,
      2666520., 2683728., 2693376., 1923147., 1930302., 1942938., 1950120.,
      1962837., 1970046., 1982844., 1990080., 1944855., 1952118., 1964862.,
      1972152., 1984977., 1992294., 2005200., 2012544., 2115819., 2123622.,
      2137122., 2144952., 2158533., 2166390., 2180052., 2187936., 2138391.,
      2146302., 2159910., 2167848., 2181537., 2189502., 2203272., 2211264.,
      2810340., 2820888., 2838888., 2849472., 2867580., 2878200., 2896416.,
      2907072., 2075103., 2083014., 2096406., 2104344., 2117817., 2125782.,
      2139336., 2147328., 2096811., 2104830., 2118330., 2126376., 2139957.,
      2148030., 2161692., 2169792., 2692260., 2702664., 2720088., 2730528.,
      2748060., 2758536., 2776176., 2786688., 2720052., 2730600., 2748168.,
      2758752., 2776428., 2787048., 2804832., 2815488., 3572272., 3586336.,
      3609568., 3623680., 3647056., 3661216., 3684736., 3698944., 2635668.,
      2646216., 2663496., 2674080., 2691468., 2702088., 2719584., 2730240.,
      2662308., 2673000., 2690424., 2701152., 2718684., 2729448., 2747088.,
      2757888., 1866123., 1873926., 1886562., 1894392., 1907109., 1914966.,
      1927764., 1935648., 1885239., 1893150., 1905894., 1913832., 1926657.,
      1934622., 1947528., 1955520., 2472804., 2483352., 2500200., 2510784.,
      2527740., 2538360., 2555424., 2566080., 1821951., 1829862., 1842390.,
      1850328., 1862937., 1870902., 1883592., 1891584., 1840203., 1848222.,
      1860858., 1868904., 1881621., 1889694., 1902492., 1910592., 1999935.,
      2008494., 2021886., 2030472., 2043945., 2052558., 2066112., 2074752.,
      2019051., 2027718., 2041218., 2049912., 2063493., 2072214., 2085876.,
      2094624., 2647188., 2658744., 2676600., 2688192., 2706156., 2717784.,
      2735856., 2747520., 1949715., 1958382., 1971666., 1980360., 1993725.,
      2002446., 2015892., 2024640., 1967967., 1976742., 1990134., 1998936.,
      2012409., 2021238., 2034792., 2043648.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      176716., 179464., 182776., 185536., 188884., 191656., 195040., 197824.,
      178876., 181672., 185032., 187840., 191236., 194056., 197488., 200320.,
      181036., 183880., 187288., 190144., 193588., 196456., 199936., 202816.,
      183196., 186088., 189544., 192448., 195940., 198856., 202384., 205312.,
      185356., 188296., 191800., 194752., 198292., 201256., 204832., 207808.,
      191836., 194920., 198568., 201664., 205348., 208456., 212176., 215296.,
      193996., 197128., 200824., 203968., 207700., 210856., 214624., 217792.,
      196156., 199336., 203080., 206272., 210052., 213256., 217072., 220288.,
      198316., 201544., 205336., 208576., 212404., 215656., 219520., 222784.,
      200476., 203752., 207592., 210880., 214756., 218056., 221968., 225280.,
      206956., 210376., 214360., 217792., 221812., 225256., 229312., 232768.,
      209116., 212584., 216616., 220096., 224164., 227656., 231760., 235264.,
      211276., 214792., 218872., 222400., 226516., 230056., 234208., 237760.,
      213436., 217000., 221128., 224704., 228868., 232456., 236656., 240256.,
      215596., 219208., 223384., 227008., 231220., 234856., 239104., 242752.,
      222076., 225832., 230152., 233920., 238276., 242056., 246448., 250240.,
      224236., 228040., 232408., 236224., 240628., 244456., 248896., 252736.,
      226396., 230248., 234664., 238528., 242980., 246856., 251344., 255232.,
      228556., 232456., 236920., 240832., 245332., 249256., 253792., 257728.,
      230716., 234664., 239176., 243136., 247684., 251656., 256240., 260224.,
      237196., 241288., 245944., 250048., 254740., 258856., 263584., 267712.,
      239356., 243496., 248200., 252352., 257092., 261256., 266032., 270208.,
      241516., 245704., 250456., 254656., 259444., 263656., 268480., 272704.,
      243676., 247912., 252712., 256960., 261796., 266056., 270928., 275200.,
      245836., 250120., 254968., 259264., 264148., 268456., 273376., 277696.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3908583., 3915630., 3922677., 3929724., 3948138., 3955212., 3962286.,
      3969360., 3987909., 3995010., 4002111., 4009212., 4027896., 4035024.,
      4042152., 4049280., 3953619., 3960774., 3967929., 3975084., 3993606.,
      4000788., 4007970., 4015152., 4033809., 4041018., 4048227., 4055436.,
      4074228., 4081464., 4088700., 4095936., 5197860., 5207400., 5216940.,
      5226480., 5250888., 5260464., 5270040., 5279616., 5304204., 5313816.,
      5323428., 5333040., 5357808., 5367456., 5377104., 5386752., 3839139.,
      3846294., 3853449., 3860604., 3878694., 3885876., 3893058., 3900240.,
      3918465., 3925674., 3932883., 3940092., 3958452., 3965688., 3972924.,
      3980160., 3882447., 3889710., 3896973., 3904236., 3922434., 3929724.,
      3937014., 3944304., 3962637., 3969954., 3977271., 3984588., 4003056.,
      4010400., 4017744., 4025088., 4223835., 4231638., 4239441., 4247244.,
      4266414., 4274244., 4282074., 4289904., 4309209., 4317066., 4324923.,
      4332780., 4352220., 4360104., 4367988., 4375872., 4268871., 4276782.,
      4284693., 4292604., 4311882., 4319820., 4327758., 4335696., 4355109.,
      4363074., 4371039., 4379004., 4398552., 4406544., 4414536., 4422528.,
      5610132., 5620680., 5631228., 5641776., 5667192., 5677776., 5688360.,
      5698944., 5724540., 5735160., 5745780., 5756400., 5782176., 5792832.,
      5803488., 5814144., 4142295., 4150206., 4158117., 4166028., 4184874.,
      4192812., 4200750., 4208688., 4227669., 4235634., 4243599., 4251564.,
      4270680., 4278672., 4286664., 4294656., 4185603., 4193622., 4201641.,
      4209660., 4228614., 4236660., 4244706., 4252752., 4271841., 4279914.,
      4287987., 4296060., 4315284., 4323384., 4331484., 4339584., 5374116.,
      5384520., 5394924., 5405328., 5429736., 5440176., 5450616., 5461056.,
      5485644., 5496120., 5506596., 5517072., 5541840., 5552352., 5562864.,
      5573376., 5429556., 5440104., 5450652., 5461200., 5485752., 5496336.,
      5506920., 5517504., 5542236., 5552856., 5563476., 5574096., 5599008.,
      5609664., 5620320., 5630976., 7130480., 7144544., 7158608., 7172672.,
      7205024., 7219136., 7233248., 7247360., 7279952., 7294112., 7308272.,
      7322432., 7355264., 7369472., 7383680., 7397888., 5260788., 5271336.,
      5281884., 5292432., 5316408., 5326992., 5337576., 5348160., 5372316.,
      5382936., 5393556., 5404176., 5428512., 5439168., 5449824., 5460480.,
      5313924., 5324616., 5335308., 5346000., 5370120., 5380848., 5391576.,
      5402304., 5426604., 5437368., 5448132., 5458896., 5483376., 5494176.,
      5504976., 5515776., 3724443., 3732246., 3740049., 3747852., 3765294.,
      3773124., 3780954., 3788784., 3806361., 3814218., 3822075., 3829932.,
      3847644., 3855528., 3863412., 3871296., 3762567., 3770478., 3778389.,
      3786300., 3803850., 3811788., 3819726., 3827664., 3845349., 3853314.,
      3861279., 3869244., 3887064., 3895056., 3903048., 3911040., 4935060.,
      4945608., 4956156., 4966704., 4989816., 5000400., 5010984., 5021568.,
      5044860., 5055480., 5066100., 5076720., 5100192., 5110848., 5121504.,
      5132160., 3635991., 3643902., 3651813., 3659724., 3676842., 3684780.,
      3692718., 3700656., 3717909., 3725874., 3733839., 3741804., 3759192.,
      3767184., 3775176., 3783168., 3672387., 3680406., 3688425., 3696444.,
      3713670., 3721716., 3729762., 3737808., 3755169., 3763242., 3771315.,
      3779388., 3796884., 3804984., 3813084., 3821184., 3991311., 3999870.,
      4008429., 4016988., 4035186., 4043772., 4052358., 4060944., 4079277.,
      4087890., 4096503., 4105116., 4123584., 4132224., 4140864., 4149504.,
      4029435., 4038102., 4046769., 4055436., 4073742., 4082436., 4091130.,
      4099824., 4118265., 4126986., 4135707., 4144428., 4163004., 4171752.,
      4180500., 4189248., 5282820., 5294376., 5305932., 5317488., 5341608.,
      5353200., 5364792., 5376384., 5400684., 5412312., 5423940., 5435568.,
      5460048., 5471712., 5483376., 5495040., 3890763., 3899430., 3908097.,
      3916764., 3934638., 3943332., 3952026., 3960720., 3978729., 3987450.,
      3996171., 4004892., 4023036., 4031784., 4040532., 4049280., 3927159.,
      3935934., 3944709., 3953484., 3971466., 3980268., 3989070., 3997872.,
      4015989., 4024818., 4033647., 4042476., 4060728., 4069584., 4078440.,
      4087296.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      350684., 353432., 356180., 358928., 362792., 365552., 368312., 371072.,
      374996., 377768., 380540., 383312., 387296., 390080., 392864., 395648.,
      354956., 357752., 360548., 363344., 367256., 370064., 372872., 375680.,
      379652., 382472., 385292., 388112., 392144., 394976., 397808., 400640.,
      359228., 362072., 364916., 367760., 371720., 374576., 377432., 380288.,
      384308., 387176., 390044., 392912., 396992., 399872., 402752., 405632.,
      363500., 366392., 369284., 372176., 376184., 379088., 381992., 384896.,
      388964., 391880., 394796., 397712., 401840., 404768., 407696., 410624.,
      367772., 370712., 373652., 376592., 380648., 383600., 386552., 389504.,
      393620., 396584., 399548., 402512., 406688., 409664., 412640., 415616.,
      380588., 383672., 386756., 389840., 394040., 397136., 400232., 403328.,
      407588., 410696., 413804., 416912., 421232., 424352., 427472., 430592.,
      384860., 387992., 391124., 394256., 398504., 401648., 404792., 407936.,
      412244., 415400., 418556., 421712., 426080., 429248., 432416., 435584.,
      389132., 392312., 395492., 398672., 402968., 406160., 409352., 412544.,
      416900., 420104., 423308., 426512., 430928., 434144., 437360., 440576.,
      393404., 396632., 399860., 403088., 407432., 410672., 413912., 417152.,
      421556., 424808., 428060., 431312., 435776., 439040., 442304., 445568.,
      397676., 400952., 404228., 407504., 411896., 415184., 418472., 421760.,
      426212., 429512., 432812., 436112., 440624., 443936., 447248., 450560.,
      410492., 413912., 417332., 420752., 425288., 428720., 432152., 435584.,
      440180., 443624., 447068., 450512., 455168., 458624., 462080., 465536.,
      414764., 418232., 421700., 425168., 429752., 433232., 436712., 440192.,
      444836., 448328., 451820., 455312., 460016., 463520., 467024., 470528.,
      419036., 422552., 426068., 429584., 434216., 437744., 441272., 444800.,
      449492., 453032., 456572., 460112., 464864., 468416., 471968., 475520.,
      423308., 426872., 430436., 434000., 438680., 442256., 445832., 449408.,
      454148., 457736., 461324., 464912., 469712., 473312., 476912., 480512.,
      427580., 431192., 434804., 438416., 443144., 446768., 450392., 454016.,
      458804., 462440., 466076., 469712., 474560., 478208., 481856., 485504.,
      440396., 444152., 447908., 451664., 456536., 460304., 464072., 467840.,
      472772., 476552., 480332., 484112., 489104., 492896., 496688., 500480.,
      444668., 448472., 452276., 456080., 461000., 464816., 468632., 472448.,
      477428., 481256., 485084., 488912., 493952., 497792., 501632., 505472.,
      448940., 452792., 456644., 460496., 465464., 469328., 473192., 477056.,
      482084., 485960., 489836., 493712., 498800., 502688., 506576., 510464.,
      453212., 457112., 461012., 464912., 469928., 473840., 477752., 481664.,
      486740., 490664., 494588., 498512., 503648., 507584., 511520., 515456.,
      457484., 461432., 465380., 469328., 474392., 478352., 482312., 486272.,
      491396., 495368., 499340., 503312., 508496., 512480., 516464., 520448.,
      470300., 474392., 478484., 482576., 487784., 491888., 495992., 500096.,
      505364., 509480., 513596., 517712., 523040., 527168., 531296., 535424.,
      474572., 478712., 482852., 486992., 492248., 496400., 500552., 504704.,
      510020., 514184., 518348., 522512., 527888., 532064., 536240., 540416.,
      478844., 483032., 487220., 491408., 496712., 500912., 505112., 509312.,
      514676., 518888., 523100., 527312., 532736., 536960., 541184., 545408.,
      483116., 487352., 491588., 495824., 501176., 505424., 509672., 513920.,
      519332., 523592., 527852., 532112., 537584., 541856., 546128., 550400.,
      487388., 491672., 495956., 500240., 505640., 509936., 514232., 518528.,
      523988., 528296., 532604., 536912., 542432., 546752., 551072., 555392.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72720.,  95634., 96588., 71370.,  72072.,  78552.,  103266.,
      104220., 76986., 77688., 100032., 131416., 132592., 97872.,
      98736.,  69480., 91170., 91980.,  67806.,  68400.,  74448.,
      97650.,  98460., 72558., 73152.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7042., 7120., 7198., 7276., 7354., 7666., 7744., 7822., 7900.,
      7978., 8290., 8368., 8446., 8524., 8602., 8914., 8992., 9070.,
      9148., 9226., 9538., 9616., 9694., 9772., 9850.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      143388., 145440., 188532., 191268., 190404., 193176., 140661., 142740.,
      142038., 144144., 154836., 157104., 203508., 206532., 205380., 208440.,
      151677., 153972., 153054., 155376., 197040., 200064., 258800., 262832.,
      261104., 265184., 192684., 195744., 194376., 197472., 136692., 138960.,
      179316., 182340., 180900., 183960., 133317., 135612., 134478., 136800.,
      146412., 148896., 191988., 195300., 193572., 196920., 142605., 145116.,
      143766., 146304.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13292., 14084., 13436., 14240., 13580., 14396., 13724., 14552., 13868.,
      14708., 14444., 15332., 14588., 15488., 14732., 15644., 14876., 15800.,
      15020., 15956., 15596., 16580., 15740., 16736., 15884., 16892., 16028.,
      17048., 16172., 17204., 16748., 17828., 16892., 17984., 17036., 18140.,
      17180., 18296., 17324., 18452., 17900., 19076., 18044., 19232., 18188.,
      19388., 18332., 19544., 18476., 19700.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      284724., 286776., 288828., 290880., 374328., 377064., 379800., 382536.,
      378036., 380808., 383580., 386352., 279243., 281322., 283401., 285480.,
      281970., 284076., 286182., 288288., 307404., 309672., 311940., 314208.,
      403992., 407016., 410040., 413064., 407700., 410760., 413820., 416880.,
      301059., 303354., 305649., 307944., 303786., 306108., 308430., 310752.,
      391056., 394080., 397104., 400128., 513568., 517600., 521632., 525664.,
      518128., 522208., 526288., 530368., 382308., 385368., 388428., 391488.,
      385656., 388752., 391848., 394944., 271116., 273384., 275652., 277920.,
      355608., 358632., 361656., 364680., 358740., 361800., 364860., 367920.,
      264339., 266634., 268929., 271224., 266634., 268956., 271278., 273600.,
      290340., 292824., 295308., 297792., 380664., 383976., 387288., 390600.,
      383796., 387144., 390492., 393840., 282699., 285210., 287721., 290232.,
      284994., 287532., 290070., 292608.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25792., 26584., 27376., 28168., 26068., 26872., 27676., 28480., 26344.,
      27160., 27976., 28792., 26620., 27448., 28276., 29104., 26896., 27736.,
      28576., 29416., 28000., 28888., 29776., 30664., 28276., 29176., 30076.,
      30976., 28552., 29464., 30376., 31288., 28828., 29752., 30676., 31600.,
      29104., 30040., 30976., 31912., 30208., 31192., 32176., 33160., 30484.,
      31480., 32476., 33472., 30760., 31768., 32776., 33784., 31036., 32056.,
      33076., 34096., 31312., 32344., 33376., 34408., 32416., 33496., 34576.,
      35656., 32692., 33784., 34876., 35968., 32968., 34072., 35176., 36280.,
      33244., 34360., 35476., 36592., 33520., 34648., 35776., 36904., 34624.,
      35800., 36976., 38152., 34900., 36088., 37276., 38464., 35176., 36376.,
      37576., 38776., 35452., 36664., 37876., 39088., 35728., 36952., 38176.,
      39400.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      285345., 290880., 375192., 382536., 378936., 386352., 279945., 285480.,
      282699., 288288., 308241., 314208., 405144., 413064., 408888., 416880.,
      301977., 307944., 304731., 310752., 392316., 400128., 515296., 525664.,
      519904., 530368., 383676., 391488., 387060., 394944., 272169., 277920.,
      357048., 364680., 360216., 367920., 265473., 271224., 267795., 273600.,
      291609., 297792., 382392., 390600., 385560., 393840., 284049., 290232.,
      286371., 292608.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26440., 28168., 26728., 28480., 27016., 28792., 27304., 29104., 27592.,
      29416., 28744., 30664., 29032., 30976., 29320., 31288., 29608., 31600.,
      29896., 31912., 31048., 33160., 31336., 33472., 31624., 33784., 31912.,
      34096., 32200., 34408., 33352., 35656., 33640., 35968., 33928., 36280.,
      34216., 36592., 34504., 36904., 35656., 38152., 35944., 38464., 36232.,
      38776., 36520., 39088., 36808., 39400.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      566613.,  570690.,  577656.,  581760.,  744948.,  750384.,  759600.,
      765072.,  752364.,  757872.,  767160.,  772704.,  555759.,  559890.,
      566802.,  570960.,  561213.,  565398.,  572364.,  576576.,  611973.,
      616482.,  623880.,  628416.,  804276.,  810288.,  820080.,  826128.,
      811692.,  817776.,  827640.,  833760.,  599391.,  603954.,  611298.,
      615888.,  604845.,  609462.,  616860.,  621504.,  778620.,  784632.,
      794208.,  800256.,  1022576., 1030592., 1043264., 1051328., 1031696.,
      1039808., 1052576., 1060736., 761268.,  767352.,  776856.,  782976.,
      767964.,  774120.,  783696.,  789888.,  539829.,  544338.,  551304.,
      555840.,  708084.,  714096.,  723312.,  729360.,  714348.,  720432.,
      729720.,  735840.,  526383.,  530946.,  537858.,  542448.,  530973.,
      535590.,  542556.,  547200.,  578277.,  583218.,  590616.,  595584.,
      758196.,  764784.,  774576.,  781200.,  764460.,  771120.,  780984.,
      787680.,  563103.,  568098.,  575442.,  580464.,  567693.,  572742.,
      580140.,  585216.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      51308., 52880., 54752., 56336., 51860., 53456., 55352., 56960., 52412.,
      54032., 55952., 57584., 52964., 54608., 56552., 58208., 53516., 55184.,
      57152., 58832., 55724., 57488., 59552., 61328., 56276., 58064., 60152.,
      61952., 56828., 58640., 60752., 62576., 57380., 59216., 61352., 63200.,
      57932., 59792., 61952., 63824., 60140., 62096., 64352., 66320., 60692.,
      62672., 64952., 66944., 61244., 63248., 65552., 67568., 61796., 63824.,
      66152., 68192., 62348., 64400., 66752., 68816., 64556., 66704., 69152.,
      71312., 65108., 67280., 69752., 71936., 65660., 67856., 70352., 72560.,
      66212., 68432., 70952., 73184., 66764., 69008., 71552., 73808., 68972.,
      71312., 73952., 76304., 69524., 71888., 74552., 76928., 70076., 72464.,
      75152., 77552., 70628., 73040., 75752., 78176., 71180., 73616., 76352.,
      78800.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1129149., 1133226., 1137303., 1141380., 1151208., 1155312., 1159416.,
      1163520., 1484460., 1489896., 1495332., 1500768., 1513728., 1519200.,
      1524672., 1530144., 1499220., 1504728., 1510236., 1515744., 1528776.,
      1534320., 1539864., 1545408., 1107387., 1111518., 1115649., 1119780.,
      1129446., 1133604., 1137762., 1141920., 1118241., 1122426., 1126611.,
      1130796., 1140516., 1144728., 1148940., 1153152., 1219437., 1223946.,
      1228455., 1232964., 1243224., 1247760., 1252296., 1256832., 1602540.,
      1608552., 1614564., 1620576., 1634112., 1640160., 1646208., 1652256.,
      1617300., 1623384., 1629468., 1635552., 1649160., 1655280., 1661400.,
      1667520., 1194219., 1198782., 1203345., 1207908., 1218006., 1222596.,
      1227186., 1231776., 1205073., 1209690., 1214307., 1218924., 1229076.,
      1233720., 1238364., 1243008., 1551228., 1557240., 1563252., 1569264.,
      1582368., 1588416., 1594464., 1600512., 2037136., 2045152., 2053168.,
      2061184., 2078464., 2086528., 2094592., 2102656., 2055280., 2063392.,
      2071504., 2079616., 2096992., 2105152., 2113312., 2121472., 1516452.,
      1522536., 1528620., 1534704., 1547592., 1553712., 1559832., 1565952.,
      1529772., 1535928., 1542084., 1548240., 1561200., 1567392., 1573584.,
      1579776., 1075149., 1079658., 1084167., 1088676., 1098072., 1102608.,
      1107144., 1111680., 1410156., 1416168., 1422180., 1428192., 1440576.,
      1446624., 1452672., 1458720., 1422612., 1428696., 1434780., 1440864.,
      1453320., 1459440., 1465560., 1471680., 1048203., 1052766., 1057329.,
      1061892., 1071126., 1075716., 1080306., 1084896., 1057329., 1061946.,
      1066563., 1071180., 1080468., 1085112., 1089756., 1094400., 1151613.,
      1156554., 1161495., 1166436., 1176264., 1181232., 1186200., 1191168.,
      1509804., 1516392., 1522980., 1529568., 1542528., 1549152., 1555776.,
      1562400., 1522260., 1528920., 1535580., 1542240., 1555272., 1561968.,
      1568664., 1575360., 1121211., 1126206., 1131201., 1136196., 1145862.,
      1150884., 1155906., 1160928., 1130337., 1135386., 1140435., 1145484.,
      1155204., 1160280., 1165356., 1170432.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101044., 102616., 104188., 105760., 107920., 109504., 111088., 112672.,
      102124., 103720., 105316., 106912., 109096., 110704., 112312., 113920.,
      103204., 104824., 106444., 108064., 110272., 111904., 113536., 115168.,
      104284., 105928., 107572., 109216., 111448., 113104., 114760., 116416.,
      105364., 107032., 108700., 110368., 112624., 114304., 115984., 117664.,
      109684., 111448., 113212., 114976., 117328., 119104., 120880., 122656.,
      110764., 112552., 114340., 116128., 118504., 120304., 122104., 123904.,
      111844., 113656., 115468., 117280., 119680., 121504., 123328., 125152.,
      112924., 114760., 116596., 118432., 120856., 122704., 124552., 126400.,
      114004., 115864., 117724., 119584., 122032., 123904., 125776., 127648.,
      118324., 120280., 122236., 124192., 126736., 128704., 130672., 132640.,
      119404., 121384., 123364., 125344., 127912., 129904., 131896., 133888.,
      120484., 122488., 124492., 126496., 129088., 131104., 133120., 135136.,
      121564., 123592., 125620., 127648., 130264., 132304., 134344., 136384.,
      122644., 124696., 126748., 128800., 131440., 133504., 135568., 137632.,
      126964., 129112., 131260., 133408., 136144., 138304., 140464., 142624.,
      128044., 130216., 132388., 134560., 137320., 139504., 141688., 143872.,
      129124., 131320., 133516., 135712., 138496., 140704., 142912., 145120.,
      130204., 132424., 134644., 136864., 139672., 141904., 144136., 146368.,
      131284., 133528., 135772., 138016., 140848., 143104., 145360., 147616.,
      135604., 137944., 140284., 142624., 145552., 147904., 150256., 152608.,
      136684., 139048., 141412., 143776., 146728., 149104., 151480., 153856.,
      137764., 140152., 142540., 144928., 147904., 150304., 152704., 155104.,
      138844., 141256., 143668., 146080., 149080., 151504., 153928., 156352.,
      139924., 142360., 144796., 147232., 150256., 152704., 155152., 157600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1130391., 1141380., 1152423., 1163520., 1486188., 1500768., 1515420.,
      1530144., 1501020., 1515744., 1530540., 1545408., 1108791., 1119780.,
      1130823., 1141920., 1119699., 1130796., 1141947., 1153152., 1221111.,
      1232964., 1244871., 1256832., 1604844., 1620576., 1636380., 1652256.,
      1619676., 1635552., 1651500., 1667520., 1196055., 1207908., 1219815.,
      1231776., 1206963., 1218924., 1230939., 1243008., 1553748., 1569264.,
      1584852., 1600512., 2040592., 2061184., 2081872., 2102656., 2058832.,
      2079616., 2100496., 2121472., 1519188., 1534704., 1550292., 1565952.,
      1532580., 1548240., 1563972., 1579776., 1077255., 1088676., 1100151.,
      1111680., 1413036., 1428192., 1443420., 1458720., 1425564., 1440864.,
      1456236., 1471680., 1050471., 1061892., 1073367., 1084896., 1059651.,
      1071180., 1082763., 1094400., 1154151., 1166436., 1178775., 1191168.,
      1513260., 1529568., 1545948., 1562400., 1525788., 1542240., 1558764.,
      1575360., 1123911., 1136196., 1148535., 1160928., 1133091., 1145484.,
      1157931., 1170432.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      102340., 105760., 109204., 112672., 103444., 106912., 110404., 113920.,
      104548., 108064., 111604., 115168., 105652., 109216., 112804., 116416.,
      106756., 110368., 114004., 117664., 111172., 114976., 118804., 122656.,
      112276., 116128., 120004., 123904., 113380., 117280., 121204., 125152.,
      114484., 118432., 122404., 126400., 115588., 119584., 123604., 127648.,
      120004., 124192., 128404., 132640., 121108., 125344., 129604., 133888.,
      122212., 126496., 130804., 135136., 123316., 127648., 132004., 136384.,
      124420., 128800., 133204., 137632., 128836., 133408., 138004., 142624.,
      129940., 134560., 139204., 143872., 131044., 135712., 140404., 145120.,
      132148., 136864., 141604., 146368., 133252., 138016., 142804., 147616.,
      137668., 142624., 147604., 152608., 138772., 143776., 148804., 153856.,
      139876., 144928., 150004., 155104., 140980., 146080., 151204., 156352.,
      142084., 147232., 152404., 157600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2252655., 2260782., 2274606., 2282760., 2296665., 2304846., 2318832.,
      2327040., 2961540., 2972376., 2990664., 3001536., 3019932., 3030840.,
      3049344., 3060288., 2991060., 3002040., 3020472., 3031488., 3050028.,
      3061080., 3079728., 3090816., 2209347., 2217582., 2231298., 2239560.,
      2253357., 2261646., 2275524., 2283840., 2231055., 2239398., 2253222.,
      2261592., 2275497., 2283894., 2297880., 2306304., 2433231., 2442222.,
      2456910., 2465928., 2480697., 2489742., 2504592., 2513664., 3197700.,
      3209688., 3229128., 3241152., 3260700., 3272760., 3292416., 3304512.,
      3227220., 3239352., 3258936., 3271104., 3290796., 3303000., 3322800.,
      3335040., 2383011., 2392110., 2406690., 2415816., 2430477., 2439630.,
      2454372., 2463552., 2404719., 2413926., 2428614., 2437848., 2452617.,
      2461878., 2476728., 2486016., 3095508., 3107496., 3126504., 3138528.,
      3157644., 3169704., 3188928., 3201024., 4065200., 4081184., 4106336.,
      4122368., 4147664., 4163744., 4189184., 4205312., 4101488., 4117664.,
      4143008., 4159232., 4184720., 4200992., 4226624., 4242944., 3026244.,
      3038376., 3057240., 3069408., 3088380., 3100584., 3119664., 3131904.,
      3052884., 3065160., 3084168., 3096480., 3115596., 3127944., 3147168.,
      3159552., 2145519., 2154510., 2168334., 2177352., 2191257., 2200302.,
      2214288., 2223360., 2814084., 2826072., 2844360., 2856384., 2874780.,
      2886840., 2905344., 2917440., 2838996., 2851128., 2869560., 2881728.,
      2900268., 2912472., 2931120., 2943360., 2091843., 2100942., 2114658.,
      2123784., 2137581., 2146734., 2160612., 2169792., 2110095., 2119302.,
      2133126., 2142360., 2156265., 2165526., 2179512., 2188800., 2298447.,
      2308302., 2322990., 2332872., 2347641., 2357550., 2372400., 2382336.,
      3013380., 3026520., 3045960., 3059136., 3078684., 3091896., 3111552.,
      3124800., 3038292., 3051576., 3071160., 3084480., 3104172., 3117528.,
      3137328., 3150720., 2237859., 2247822., 2262402., 2272392., 2287053.,
      2297070., 2311812., 2321856., 2256111., 2266182., 2280870., 2290968.,
      2305737., 2315862., 2330712., 2340864.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      201548., 204680., 208376., 211520., 215252., 218408., 222176., 225344.,
      203708., 206888., 210632., 213824., 217604., 220808., 224624., 227840.,
      205868., 209096., 212888., 216128., 219956., 223208., 227072., 230336.,
      208028., 211304., 215144., 218432., 222308., 225608., 229520., 232832.,
      210188., 213512., 217400., 220736., 224660., 228008., 231968., 235328.,
      218828., 222344., 226424., 229952., 234068., 237608., 241760., 245312.,
      220988., 224552., 228680., 232256., 236420., 240008., 244208., 247808.,
      223148., 226760., 230936., 234560., 238772., 242408., 246656., 250304.,
      225308., 228968., 233192., 236864., 241124., 244808., 249104., 252800.,
      227468., 231176., 235448., 239168., 243476., 247208., 251552., 255296.,
      236108., 240008., 244472., 248384., 252884., 256808., 261344., 265280.,
      238268., 242216., 246728., 250688., 255236., 259208., 263792., 267776.,
      240428., 244424., 248984., 252992., 257588., 261608., 266240., 270272.,
      242588., 246632., 251240., 255296., 259940., 264008., 268688., 272768.,
      244748., 248840., 253496., 257600., 262292., 266408., 271136., 275264.,
      253388., 257672., 262520., 266816., 271700., 276008., 280928., 285248.,
      255548., 259880., 264776., 269120., 274052., 278408., 283376., 287744.,
      257708., 262088., 267032., 271424., 276404., 280808., 285824., 290240.,
      259868., 264296., 269288., 273728., 278756., 283208., 288272., 292736.,
      262028., 266504., 271544., 276032., 281108., 285608., 290720., 295232.,
      270668., 275336., 280568., 285248., 290516., 295208., 300512., 305216.,
      272828., 277544., 282824., 287552., 292868., 297608., 302960., 307712.,
      274988., 279752., 285080., 289856., 295220., 300008., 305408., 310208.,
      277148., 281960., 287336., 292160., 297572., 302408., 307856., 312704.,
      279308., 284168., 289592., 294464., 299924., 304808., 310304., 315200.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4497183., 4505310., 4513437., 4521564., 4541058., 4549212., 4557366.,
      4565520., 4585149., 4593330., 4601511., 4609692., 4629456., 4637664.,
      4645872., 4654080., 5912244., 5923080., 5933916., 5944752., 5970456.,
      5981328., 5992200., 6003072., 6028956., 6039864., 6050772., 6061680.,
      6087744., 6098688., 6109632., 6120576., 5971140., 5982120., 5993100.,
      6004080., 6029928., 6040944., 6051960., 6062976., 6089004., 6100056.,
      6111108., 6122160., 6148368., 6159456., 6170544., 6181632., 4410459.,
      4418694., 4426929., 4435164., 4454334., 4462596., 4470858., 4479120.,
      4498425., 4506714., 4515003., 4523292., 4542732., 4551048., 4559364.,
      4567680., 4453767., 4462110., 4470453., 4478796., 4498074., 4506444.,
      4514814., 4523184., 4542597., 4550994., 4559391., 4567788., 4587336.,
      4595760., 4604184., 4612608., 4857471., 4866462., 4875453., 4884444.,
      4904802., 4913820., 4922838., 4931856., 4952349., 4961394., 4970439.,
      4979484., 5000112., 5009184., 5018256., 5027328., 6383412., 6395400.,
      6407388., 6419376., 6446232., 6458256., 6470280., 6482304., 6509340.,
      6521400., 6533460., 6545520., 6572736., 6584832., 6596928., 6609024.,
      6442308., 6454440., 6466572., 6478704., 6505704., 6517872., 6530040.,
      6542208., 6569388., 6581592., 6593796., 6606000., 6633360., 6645600.,
      6657840., 6670080., 4756923., 4766022., 4775121., 4784220., 4804254.,
      4813380., 4822506., 4831632., 4851801., 4860954., 4870107., 4879260.,
      4899564., 4908744., 4917924., 4927104., 4800231., 4809438., 4818645.,
      4827852., 4847994., 4857228., 4866462., 4875696., 4895973., 4905234.,
      4914495., 4923756., 4944168., 4953456., 4962744., 4972032., 6179028.,
      6191016., 6203004., 6214992., 6240984., 6253008., 6265032., 6277056.,
      6303228., 6315288., 6327348., 6339408., 6365760., 6377856., 6389952.,
      6402048., 8114416., 8130400., 8146384., 8162368., 8196640., 8212672.,
      8228704., 8244736., 8279248., 8295328., 8311408., 8327488., 8362240.,
      8378368., 8394496., 8410624., 8186800., 8202976., 8219152., 8235328.,
      8269792., 8286016., 8302240., 8318464., 8353168., 8369440., 8385712.,
      8401984., 8436928., 8453248., 8469568., 8485888., 6040356., 6052488.,
      6064620., 6076752., 6102312., 6114480., 6126648., 6138816., 6164556.,
      6176760., 6188964., 6201168., 6227088., 6239328., 6251568., 6263808.,
      6093492., 6105768., 6118044., 6130320., 6156024., 6168336., 6180648.,
      6192960., 6218844., 6231192., 6243540., 6255888., 6281952., 6294336.,
      6306720., 6319104., 4282047., 4291038., 4300029., 4309020., 4327650.,
      4336668., 4345686., 4354704., 4373469., 4382514., 4391559., 4400604.,
      4419504., 4428576., 4437648., 4446720., 5616180., 5628168., 5640156.,
      5652144., 5676696., 5688720., 5700744., 5712768., 5737500., 5749560.,
      5761620., 5773680., 5798592., 5810688., 5822784., 5834880., 5665860.,
      5677992., 5690124., 5702256., 5726952., 5739120., 5751288., 5763456.,
      5788332., 5800536., 5812740., 5824944., 5850000., 5862240., 5874480.,
      5886720., 4174587., 4183686., 4192785., 4201884., 4220190., 4229316.,
      4238442., 4247568., 4266009., 4275162., 4284315., 4293468., 4312044.,
      4321224., 4330404., 4339584., 4210983., 4220190., 4229397., 4238604.,
      4257018., 4266252., 4275486., 4284720., 4303269., 4312530., 4321791.,
      4331052., 4349736., 4359024., 4368312., 4377600., 4587039., 4596894.,
      4606749., 4616604., 4636098., 4645980., 4655862., 4665744., 4685373.,
      4695282., 4705191., 4715100., 4734864., 4744800., 4754736., 4764672.,
      6013620., 6026760., 6039900., 6053040., 6078744., 6091920., 6105096.,
      6118272., 6144156., 6157368., 6170580., 6183792., 6209856., 6223104.,
      6236352., 6249600., 6063300., 6076584., 6089868., 6103152., 6129000.,
      6142320., 6155640., 6168960., 6194988., 6208344., 6221700., 6235056.,
      6261264., 6274656., 6288048., 6301440., 4465755., 4475718., 4485681.,
      4495644., 4514814., 4524804., 4534794., 4544784., 4564089., 4574106.,
      4584123., 4594140., 4613580., 4623624., 4633668., 4643712., 4502151.,
      4512222., 4522293., 4532364., 4551642., 4561740., 4571838., 4581936.,
      4601349., 4611474., 4621599., 4631724., 4651272., 4661424., 4671576.,
      4681728.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      399964., 403096., 406228., 409360., 413608., 416752., 419896., 423040.,
      427348., 430504., 433660., 436816., 441184., 444352., 447520., 450688.,
      404236., 407416., 410596., 413776., 418072., 421264., 424456., 427648.,
      432004., 435208., 438412., 441616., 446032., 449248., 452464., 455680.,
      408508., 411736., 414964., 418192., 422536., 425776., 429016., 432256.,
      436660., 439912., 443164., 446416., 450880., 454144., 457408., 460672.,
      412780., 416056., 419332., 422608., 427000., 430288., 433576., 436864.,
      441316., 444616., 447916., 451216., 455728., 459040., 462352., 465664.,
      417052., 420376., 423700., 427024., 431464., 434800., 438136., 441472.,
      445972., 449320., 452668., 456016., 460576., 463936., 467296., 470656.,
      434140., 437656., 441172., 444688., 449320., 452848., 456376., 459904.,
      464596., 468136., 471676., 475216., 479968., 483520., 487072., 490624.,
      438412., 441976., 445540., 449104., 453784., 457360., 460936., 464512.,
      469252., 472840., 476428., 480016., 484816., 488416., 492016., 495616.,
      442684., 446296., 449908., 453520., 458248., 461872., 465496., 469120.,
      473908., 477544., 481180., 484816., 489664., 493312., 496960., 500608.,
      446956., 450616., 454276., 457936., 462712., 466384., 470056., 473728.,
      478564., 482248., 485932., 489616., 494512., 498208., 501904., 505600.,
      451228., 454936., 458644., 462352., 467176., 470896., 474616., 478336.,
      483220., 486952., 490684., 494416., 499360., 503104., 506848., 510592.,
      468316., 472216., 476116., 480016., 485032., 488944., 492856., 496768.,
      501844., 505768., 509692., 513616., 518752., 522688., 526624., 530560.,
      472588., 476536., 480484., 484432., 489496., 493456., 497416., 501376.,
      506500., 510472., 514444., 518416., 523600., 527584., 531568., 535552.,
      476860., 480856., 484852., 488848., 493960., 497968., 501976., 505984.,
      511156., 515176., 519196., 523216., 528448., 532480., 536512., 540544.,
      481132., 485176., 489220., 493264., 498424., 502480., 506536., 510592.,
      515812., 519880., 523948., 528016., 533296., 537376., 541456., 545536.,
      485404., 489496., 493588., 497680., 502888., 506992., 511096., 515200.,
      520468., 524584., 528700., 532816., 538144., 542272., 546400., 550528.,
      502492., 506776., 511060., 515344., 520744., 525040., 529336., 533632.,
      539092., 543400., 547708., 552016., 557536., 561856., 566176., 570496.,
      506764., 511096., 515428., 519760., 525208., 529552., 533896., 538240.,
      543748., 548104., 552460., 556816., 562384., 566752., 571120., 575488.,
      511036., 515416., 519796., 524176., 529672., 534064., 538456., 542848.,
      548404., 552808., 557212., 561616., 567232., 571648., 576064., 580480.,
      515308., 519736., 524164., 528592., 534136., 538576., 543016., 547456.,
      553060., 557512., 561964., 566416., 572080., 576544., 581008., 585472.,
      519580., 524056., 528532., 533008., 538600., 543088., 547576., 552064.,
      557716., 562216., 566716., 571216., 576928., 581440., 585952., 590464.,
      536668., 541336., 546004., 550672., 556456., 561136., 565816., 570496.,
      576340., 581032., 585724., 590416., 596320., 601024., 605728., 610432.,
      540940., 545656., 550372., 555088., 560920., 565648., 570376., 575104.,
      580996., 585736., 590476., 595216., 601168., 605920., 610672., 615424.,
      545212., 549976., 554740., 559504., 565384., 570160., 574936., 579712.,
      585652., 590440., 595228., 600016., 606016., 610816., 615616., 620416.,
      549484., 554296., 559108., 563920., 569848., 574672., 579496., 584320.,
      590308., 595144., 599980., 604816., 610864., 615712., 620560., 625408.,
      553756., 558616., 563476., 568336., 574312., 579184., 584056., 588928.,
      594964., 599848., 604732., 609616., 615712., 620608., 625504., 630400.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150660., 186255., 187740., 148410., 149580., 162720., 201105.,
      202590., 160110., 161280., 207160., 255890., 257720., 203560.,
      205000., 143820., 177480., 178740., 141030., 142020., 154080.,
      190080., 191340., 150930., 151920.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19527., 19698., 19869., 20040., 20211., 21237., 21408., 21579., 21750.,
      21921., 22947., 23118., 23289., 23460., 23631., 24657., 24828., 24999.,
      25170., 25341., 26367., 26538., 26709., 26880., 27051.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297900., 301320., 368235., 372510., 371160., 375480., 293364., 296820.,
      295668., 299160., 321660., 325440., 397485., 402210., 400410., 405180.,
      316404., 320220., 318708., 322560., 409280., 414320., 505480., 511780.,
      509080., 515440., 402032., 407120., 404864., 410000., 283860., 287640.,
      350235., 354960., 352710., 357480., 278244., 282060., 280188., 284040.,
      304020., 308160., 374985., 380160., 377460., 382680., 297684., 301860.,
      299628., 303840.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      37560., 39054., 37884., 39396., 38208., 39738., 38532., 40080., 38856.,
      40422., 40800., 42474., 41124., 42816., 41448., 43158., 41772., 43500.,
      42096., 43842., 44040., 45894., 44364., 46236., 44688., 46578., 45012.,
      46920., 45336., 47262., 47280., 49314., 47604., 49656., 47928., 49998.,
      48252., 50340., 48576., 50682., 50520., 52734., 50844., 53076., 51168.,
      53418., 51492., 53760., 51816., 54102.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592380.,  595800.,  599220.,  602640.,  732195.,  736470.,  740745.,
      745020.,  738000.,  742320.,  746640.,  750960.,  583272.,  586728.,
      590184.,  593640.,  587844.,  591336.,  594828.,  598320.,  639540.,
      643320.,  647100.,  650880.,  790245.,  794970.,  799695.,  804420.,
      796050.,  800820.,  805590.,  810360.,  628992.,  632808.,  636624.,
      640440.,  633564.,  637416.,  641268.,  645120.,  813520.,  818560.,
      823600.,  828640.,  1004660., 1010960., 1017260., 1023560., 1011800.,
      1018160., 1024520., 1030880., 798976.,  804064.,  809152.,  814240.,
      804592.,  809728.,  814864.,  820000.,  563940.,  567720.,  571500.,
      575280.,  695745.,  700470.,  705195.,  709920.,  700650.,  705420.,
      710190.,  714960.,  552672.,  556488.,  560304.,  564120.,  556524.,
      560376.,  564228.,  568080.,  603900.,  608040.,  612180.,  616320.,
      744795.,  749970.,  755145.,  760320.,  749700.,  754920.,  760140.,
      765360.,  591192.,  595368.,  599544.,  603720.,  595044.,  599256.,
      603468.,  607680.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      73626.,  75120.,  76614.,  78108.,  74256.,  75768.,  77280.,  78792.,
      74886.,  76416.,  77946.,  79476.,  75516.,  77064.,  78612.,  80160.,
      76146.,  77712.,  79278.,  80844.,  79926.,  81600.,  83274.,  84948.,
      80556.,  82248.,  83940.,  85632.,  81186.,  82896.,  84606.,  86316.,
      81816.,  83544.,  85272.,  87000.,  82446.,  84192.,  85938.,  87684.,
      86226.,  88080.,  89934.,  91788.,  86856.,  88728.,  90600.,  92472.,
      87486.,  89376.,  91266.,  93156.,  88116.,  90024.,  91932.,  93840.,
      88746.,  90672.,  92598.,  94524.,  92526.,  94560.,  96594.,  98628.,
      93156.,  95208.,  97260.,  99312.,  93786.,  95856.,  97926.,  99996.,
      94416.,  96504.,  98592.,  100680., 95046.,  97152.,  99258.,  101364.,
      98826.,  101040., 103254., 105468., 99456.,  101688., 103920., 106152.,
      100086., 102336., 104586., 106836., 100716., 102984., 105252., 107520.,
      101346., 103632., 105918., 108204.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      593424., 602640.,  733545.,  745020.,  739395.,  750960., 584424.,
      593640., 589032.,  598320.,  640944.,  650880.,  792045., 804420.,
      797895., 810360.,  630504.,  640440.,  635112.,  645120., 815632.,
      828640., 1007360., 1023560., 1014560., 1030880., 801232., 814240.,
      806896., 820000.,  565704.,  575280.,  697995.,  709920., 702945.,
      714960., 554544.,  564120.,  558432.,  568080.,  606024., 616320.,
      747495., 760320.,  752445.,  765360.,  593424.,  603720., 597312.,
      607680.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      74796.,  78108.,  75444.,  78792.,  76092.,  79476.,  76740.,  80160.,
      77388.,  80844.,  81276.,  84948.,  81924.,  85632.,  82572.,  86316.,
      83220.,  87000.,  83868.,  87684.,  87756.,  91788.,  88404.,  92472.,
      89052.,  93156.,  89700.,  93840.,  90348.,  94524.,  94236.,  98628.,
      94884.,  99312.,  95532.,  99996.,  96180.,  100680., 96828.,  101364.,
      100716., 105468., 101364., 106152., 102012., 106836., 102660., 107520.,
      103308., 108204.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1180044., 1186848., 1198440., 1205280., 1458585., 1467090., 1481490.,
      1490040., 1470195., 1478790., 1493280., 1501920., 1161972., 1168848.,
      1180368., 1187280., 1171116., 1178064., 1189656., 1196640., 1274364.,
      1281888., 1294200., 1301760., 1574685., 1584090., 1599390., 1608840.,
      1586295., 1595790., 1611180., 1620720., 1253412., 1261008., 1273248.,
      1280880., 1262556., 1270224., 1282536., 1290240., 1621232., 1631264.,
      1647200., 1657280., 2002180., 2014720., 2034520., 2047120., 2016460.,
      2029120., 2049040., 2061760., 1592336., 1602464., 1618304., 1628480.,
      1603568., 1613792., 1629728., 1640000., 1123884., 1131408., 1143000.,
      1150560., 1386585., 1395990., 1410390., 1419840., 1396395., 1405890.,
      1420380., 1429920., 1101492., 1109088., 1120608., 1128240., 1109196.,
      1116864., 1128456., 1136160., 1203804., 1212048., 1224360., 1232640.,
      1484685., 1494990., 1510290., 1520640., 1494495., 1504890., 1520280.,
      1530720., 1178532., 1186848., 1199088., 1207440., 1186236., 1194624.,
      1206936., 1215360.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      146622., 149592., 153228., 156216., 147882., 150888., 154560., 157584.,
      149142., 152184., 155892., 158952., 150402., 153480., 157224., 160320.,
      151662., 154776., 158556., 161688., 159222., 162552., 166548., 169896.,
      160482., 163848., 167880., 171264., 161742., 165144., 169212., 172632.,
      163002., 166440., 170544., 174000., 164262., 167736., 171876., 175368.,
      171822., 175512., 179868., 183576., 173082., 176808., 181200., 184944.,
      174342., 178104., 182532., 186312., 175602., 179400., 183864., 187680.,
      176862., 180696., 185196., 189048., 184422., 188472., 193188., 197256.,
      185682., 189768., 194520., 198624., 186942., 191064., 195852., 199992.,
      188202., 192360., 197184., 201360., 189462., 193656., 198516., 202728.,
      197022., 201432., 206508., 210936., 198282., 202728., 207840., 212304.,
      199542., 204024., 209172., 213672., 200802., 205320., 210504., 215040.,
      202062., 206616., 211836., 216408.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2353284., 2360088., 2366892., 2373696., 2390040., 2396880., 2403720.,
      2410560., 2908665., 2917170., 2925675., 2934180., 2954430., 2962980.,
      2971530., 2980080., 2931795., 2940390., 2948985., 2957580., 2977920.,
      2986560., 2995200., 3003840., 2317068., 2323944., 2330820., 2337696.,
      2353824., 2360736., 2367648., 2374560., 2335284., 2342232., 2349180.,
      2356128., 2372328., 2379312., 2386296., 2393280., 2541204., 2548728.,
      2556252., 2563776., 2580840., 2588400., 2595960., 2603520., 3139965.,
      3149370., 3158775., 3168180., 3189330., 3198780., 3208230., 3217680.,
      3163095., 3172590., 3182085., 3191580., 3212820., 3222360., 3231900.,
      3241440., 2499228., 2506824., 2514420., 2522016., 2538864., 2546496.,
      2554128., 2561760., 2517444., 2525112., 2532780., 2540448., 2557368.,
      2565072., 2572776., 2580480., 3232432., 3242464., 3252496., 3262528.,
      3284320., 3294400., 3304480., 3314560., 3991820., 4004360., 4016900.,
      4029440., 4056440., 4069040., 4081640., 4094240., 4020260., 4032920.,
      4045580., 4058240., 4085360., 4098080., 4110800., 4123520., 3174544.,
      3184672., 3194800., 3204928., 3226432., 3236608., 3246784., 3256960.,
      3196912., 3207136., 3217360., 3227584., 3249184., 3259456., 3269728.,
      3280000., 2240244., 2247768., 2255292., 2262816., 2278440., 2286000.,
      2293560., 2301120., 2763765., 2773170., 2782575., 2791980., 2811330.,
      2820780., 2830230., 2839680., 2783295., 2792790., 2802285., 2811780.,
      2831220., 2840760., 2850300., 2859840., 2195388., 2202984., 2210580.,
      2218176., 2233584., 2241216., 2248848., 2256480., 2210724., 2218392.,
      2226060., 2233728., 2249208., 2256912., 2264616., 2272320., 2399364.,
      2407608., 2415852., 2424096., 2440440., 2448720., 2457000., 2465280.,
      2959065., 2969370., 2979675., 2989980., 3010230., 3020580., 3030930.,
      3041280., 2978595., 2988990., 2999385., 3009780., 3030120., 3040560.,
      3051000., 3061440., 2348748., 2357064., 2365380., 2373696., 2389824.,
      2398176., 2406528., 2414880., 2364084., 2372472., 2380860., 2389248.,
      2405448., 2413872., 2422296., 2430720.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      290274., 293244., 296214., 299184., 303468., 306456., 309444., 312432.,
      292758., 295764., 298770., 301776., 306096., 309120., 312144., 315168.,
      295242., 298284., 301326., 304368., 308724., 311784., 314844., 317904.,
      297726., 300804., 303882., 306960., 311352., 314448., 317544., 320640.,
      300210., 303324., 306438., 309552., 313980., 317112., 320244., 323376.,
      315114., 318444., 321774., 325104., 329748., 333096., 336444., 339792.,
      317598., 320964., 324330., 327696., 332376., 335760., 339144., 342528.,
      320082., 323484., 326886., 330288., 335004., 338424., 341844., 345264.,
      322566., 326004., 329442., 332880., 337632., 341088., 344544., 348000.,
      325050., 328524., 331998., 335472., 340260., 343752., 347244., 350736.,
      339954., 343644., 347334., 351024., 356028., 359736., 363444., 367152.,
      342438., 346164., 349890., 353616., 358656., 362400., 366144., 369888.,
      344922., 348684., 352446., 356208., 361284., 365064., 368844., 372624.,
      347406., 351204., 355002., 358800., 363912., 367728., 371544., 375360.,
      349890., 353724., 357558., 361392., 366540., 370392., 374244., 378096.,
      364794., 368844., 372894., 376944., 382308., 386376., 390444., 394512.,
      367278., 371364., 375450., 379536., 384936., 389040., 393144., 397248.,
      369762., 373884., 378006., 382128., 387564., 391704., 395844., 399984.,
      372246., 376404., 380562., 384720., 390192., 394368., 398544., 402720.,
      374730., 378924., 383118., 387312., 392820., 397032., 401244., 405456.,
      389634., 394044., 398454., 402864., 408588., 413016., 417444., 421872.,
      392118., 396564., 401010., 405456., 411216., 415680., 420144., 424608.,
      394602., 399084., 403566., 408048., 413844., 418344., 422844., 427344.,
      397086., 401604., 406122., 410640., 416472., 421008., 425544., 430080.,
      399570., 404124., 408678., 413232., 419100., 423672., 428244., 432816.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2355372., 2373696., 2392092., 2410560., 2911365., 2934180., 2957085.,
      2980080., 2934585., 2957580., 2980665., 3003840., 2319372., 2337696.,
      2356092., 2374560., 2337660., 2356128., 2374668., 2393280., 2544012.,
      2563776., 2583612., 2603520., 3143565., 3168180., 3192885., 3217680.,
      3166785., 3191580., 3216465., 3241440., 2502252., 2522016., 2541852.,
      2561760., 2520540., 2540448., 2560428., 2580480., 3236656., 3262528.,
      3288496., 3314560., 3997220., 4029440., 4061780., 4094240., 4025780.,
      4058240., 4090820., 4123520., 3179056., 3204928., 3230896., 3256960.,
      3201520., 3227584., 3253744., 3280000., 2243772., 2262816., 2281932.,
      2301120., 2768265., 2791980., 2815785., 2839680., 2787885., 2811780.,
      2835765., 2859840., 2199132., 2218176., 2237292., 2256480., 2214540.,
      2233728., 2252988., 2272320., 2403612., 2424096., 2444652., 2465280.,
      2964465., 2989980., 3015585., 3041280., 2984085., 3009780., 3035565.,
      3061440., 2353212., 2373696., 2394252., 2414880., 2368620., 2389248.,
      2409948., 2430720.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      292614., 299184., 305790., 312432., 295134., 301776., 308454., 315168.,
      297654., 304368., 311118., 317904., 300174., 306960., 313782., 320640.,
      302694., 309552., 316446., 323376., 317814., 325104., 332430., 339792.,
      320334., 327696., 335094., 342528., 322854., 330288., 337758., 345264.,
      325374., 332880., 340422., 348000., 327894., 335472., 343086., 350736.,
      343014., 351024., 359070., 367152., 345534., 353616., 361734., 369888.,
      348054., 356208., 364398., 372624., 350574., 358800., 367062., 375360.,
      353094., 361392., 369726., 378096., 368214., 376944., 385710., 394512.,
      370734., 379536., 388374., 397248., 373254., 382128., 391038., 399984.,
      375774., 384720., 393702., 402720., 378294., 387312., 396366., 405456.,
      393414., 402864., 412350., 421872., 395934., 405456., 415014., 424608.,
      398454., 408048., 417678., 427344., 400974., 410640., 420342., 430080.,
      403494., 413232., 423006., 432816.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4697172., 4710744., 4733784., 4747392., 4770540., 4784184., 4807440.,
      4821120., 5805765., 5822730., 5851350., 5868360., 5897115., 5914170.,
      5943060., 5960160., 5852025., 5869170., 5897970., 5915160., 5944095.,
      5961330., 5990400., 6007680., 4625028., 4638744., 4661640., 4675392.,
      4698396., 4712184., 4735296., 4749120., 4661460., 4675320., 4698360.,
      4712256., 4735404., 4749336., 4772592., 4786560., 5073012., 5088024.,
      5112504., 5127552., 5152140., 5167224., 5191920., 5207040., 6268365.,
      6287130., 6317550., 6336360., 6366915., 6385770., 6416460., 6435360.,
      6314625., 6333570., 6364170., 6383160., 6413895., 6432930., 6463800.,
      6482880., 4989348., 5004504., 5028840., 5044032., 5068476., 5083704.,
      5108256., 5123520., 5025780., 5041080., 5065560., 5080896., 5105484.,
      5120856., 5145552., 5160960., 6453296., 6473312., 6504992., 6525056.,
      6556880., 6576992., 6608960., 6629120., 7969420., 7994440., 8033800.,
      8058880., 8098420., 8123560., 8163280., 8188480., 8026300., 8051560.,
      8091160., 8116480., 8156260., 8181640., 8221600., 8247040., 6337904.,
      6358112., 6389600., 6409856., 6441488., 6461792., 6493568., 6513920.,
      6382640., 6403040., 6434720., 6455168., 6486992., 6507488., 6539456.,
      6560000., 4472532., 4487544., 4510584., 4525632., 4548780., 4563864.,
      4587120., 4602240., 5517765., 5536530., 5565150., 5583960., 5612715.,
      5631570., 5660460., 5679360., 5556825., 5575770., 5604570., 5623560.,
      5652495., 5671530., 5700600., 5719680., 4383108., 4398264., 4421160.,
      4436352., 4459356., 4474584., 4497696., 4512960., 4413780., 4429080.,
      4452120., 4467456., 4490604., 4505976., 4529232., 4544640., 4790772.,
      4807224., 4831704., 4848192., 4872780., 4889304., 4914000., 4930560.,
      5908365., 5928930., 5959350., 5979960., 6010515., 6031170., 6061860.,
      6082560., 5947425., 5968170., 5998770., 6019560., 6050295., 6071130.,
      6102000., 6122880., 4689828., 4706424., 4730760., 4747392., 4771836.,
      4788504., 4813056., 4829760., 4720500., 4737240., 4761720., 4778496.,
      4803084., 4819896., 4844592., 4861440.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      579306., 585228., 592428., 598368., 605622., 611580., 618888., 624864.,
      584274., 590268., 597540., 603552., 610878., 616908., 624288., 630336.,
      589242., 595308., 602652., 608736., 616134., 622236., 629688., 635808.,
      594210., 600348., 607764., 613920., 621390., 627564., 635088., 641280.,
      599178., 605388., 612876., 619104., 626646., 632892., 640488., 646752.,
      628986., 635628., 643548., 650208., 658182., 664860., 672888., 679584.,
      633954., 640668., 648660., 655392., 663438., 670188., 678288., 685056.,
      638922., 645708., 653772., 660576., 668694., 675516., 683688., 690528.,
      643890., 650748., 658884., 665760., 673950., 680844., 689088., 696000.,
      648858., 655788., 663996., 670944., 679206., 686172., 694488., 701472.,
      678666., 686028., 694668., 702048., 710742., 718140., 726888., 734304.,
      683634., 691068., 699780., 707232., 715998., 723468., 732288., 739776.,
      688602., 696108., 704892., 712416., 721254., 728796., 737688., 745248.,
      693570., 701148., 710004., 717600., 726510., 734124., 743088., 750720.,
      698538., 706188., 715116., 722784., 731766., 739452., 748488., 756192.,
      728346., 736428., 745788., 753888., 763302., 771420., 780888., 789024.,
      733314., 741468., 750900., 759072., 768558., 776748., 786288., 794496.,
      738282., 746508., 756012., 764256., 773814., 782076., 791688., 799968.,
      743250., 751548., 761124., 769440., 779070., 787404., 797088., 805440.,
      748218., 756588., 766236., 774624., 784326., 792732., 802488., 810912.,
      778026., 786828., 796908., 805728., 815862., 824700., 834888., 843744.,
      782994., 791868., 802020., 810912., 821118., 830028., 840288., 849216.,
      787962., 796908., 807132., 816096., 826374., 835356., 845688., 854688.,
      792930., 801948., 812244., 821280., 831630., 840684., 851088., 860160.,
      797898., 806988., 817356., 826464., 836886., 846012., 856488., 865632.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9380772.,  9394344.,  9407916.,  9421488.,  9453960.,  9467568.,
      9481176.,  9494784.,  9527436.,  9541080.,  9554724.,  9568368.,
      9601200.,  9614880.,  9628560.,  9642240.,  11594565., 11611530.,
      11628495., 11645460., 11685690., 11702700., 11719710., 11736720.,
      11777175., 11794230., 11811285., 11828340., 11869020., 11886120.,
      11903220., 11920320., 11686905., 11704050., 11721195., 11738340.,
      11778750., 11795940., 11813130., 11830320., 11870955., 11888190.,
      11905425., 11922660., 11963520., 11980800., 11998080., 12015360.,
      9236340.,  9250056.,  9263772.,  9277488.,  9309528.,  9323280.,
      9337032.,  9350784.,  9383004.,  9396792.,  9410580.,  9424368.,
      9456768.,  9470592.,  9484416.,  9498240.,  9309060.,  9322920.,
      9336780.,  9350640.,  9382824.,  9396720.,  9410616.,  9424512.,
      9456876.,  9470808.,  9484740.,  9498672.,  9531216.,  9545184.,
      9559152.,  9573120.,  10131012., 10146024., 10161036., 10176048.,
      10209960., 10225008., 10240056., 10255104., 10289196., 10304280.,
      10319364., 10334448., 10368720., 10383840., 10398960., 10414080.,
      12517965., 12536730., 12555495., 12574260., 12616290., 12635100.,
      12653910., 12672720., 12714975., 12733830., 12752685., 12771540.,
      12814020., 12832920., 12851820., 12870720., 12610305., 12629250.,
      12648195., 12667140., 12709350., 12728340., 12747330., 12766320.,
      12808755., 12827790., 12846825., 12865860., 12908520., 12927600.,
      12946680., 12965760., 9963540.,  9978696.,  9993852.,  10009008.,
      10042488., 10057680., 10072872., 10088064., 10121724., 10136952.,
      10152180., 10167408., 10201248., 10216512., 10231776., 10247040.,
      10036260., 10051560., 10066860., 10082160., 10115784., 10131120.,
      10146456., 10161792., 10195596., 10210968., 10226340., 10241712.,
      10275696., 10291104., 10306512., 10321920., 12886576., 12906592.,
      12926608., 12946624., 12989920., 13009984., 13030048., 13050112.,
      13093648., 13113760., 13133872., 13153984., 13197760., 13217920.,
      13238080., 13258240., 15913820., 15938840., 15963860., 15988880.,
      16042520., 16067600., 16092680., 16117760., 16171700., 16196840.,
      16221980., 16247120., 16301360., 16326560., 16351760., 16376960.,
      16027340., 16052600., 16077860., 16103120., 16157000., 16182320.,
      16207640., 16232960., 16287140., 16312520., 16337900., 16363280.,
      16417760., 16443200., 16468640., 16494080., 12655600., 12675808.,
      12696016., 12716224., 12758944., 12779200., 12799456., 12819712.,
      12862672., 12882976., 12903280., 12923584., 12966784., 12987136.,
      13007488., 13027840., 12744880., 12765280., 12785680., 12806080.,
      12848992., 12869440., 12889888., 12910336., 12953488., 12973984.,
      12994480., 13014976., 13058368., 13078912., 13099456., 13120000.,
      8930052.,  8945064.,  8960076.,  8975088.,  9006120.,  9021168.,
      9036216.,  9051264.,  9082476.,  9097560.,  9112644.,  9127728.,
      9159120.,  9174240.,  9189360.,  9204480.,  11016765., 11035530.,
      11054295., 11073060., 11111490., 11130300., 11149110., 11167920.,
      11206575., 11225430., 11244285., 11263140., 11302020., 11320920.,
      11339820., 11358720., 11094705., 11113650., 11132595., 11151540.,
      11190150., 11209140., 11228130., 11247120., 11285955., 11304990.,
      11324025., 11343060., 11382120., 11401200., 11420280., 11439360.,
      8751060.,  8766216.,  8781372.,  8796528.,  8827128.,  8842320.,
      8857512.,  8872704.,  8903484.,  8918712.,  8933940.,  8949168.,
      8980128.,  8995392.,  9010656.,  9025920.,  8812260.,  8827560.,
      8842860.,  8858160.,  8888904.,  8904240.,  8919576.,  8934912.,
      8965836.,  8981208.,  8996580.,  9011952.,  9043056.,  9058464.,
      9073872.,  9089280.,  9565092.,  9581544.,  9597996.,  9614448.,
      9646920.,  9663408.,  9679896.,  9696384.,  9729036.,  9745560.,
      9762084.,  9778608.,  9811440.,  9828000.,  9844560.,  9861120.,
      11796165., 11816730., 11837295., 11857860., 11898090., 11918700.,
      11939310., 11959920., 12000375., 12021030., 12041685., 12062340.,
      12103020., 12123720., 12144420., 12165120., 11874105., 11894850.,
      11915595., 11936340., 11976750., 11997540., 12018330., 12039120.,
      12079755., 12100590., 12121425., 12142260., 12183120., 12204000.,
      12224880., 12245760., 9363060.,  9379656.,  9396252.,  9412848.,
      9444888.,  9461520.,  9478152.,  9494784.,  9527004.,  9543672.,
      9560340.,  9577008.,  9609408.,  9626112.,  9642816.,  9659520.,
      9424260.,  9441000.,  9457740.,  9474480.,  9506664.,  9523440.,
      9540216.,  9556992.,  9589356.,  9606168.,  9622980.,  9639792.,
      9672336.,  9689184.,  9706032.,  9722880.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1152690., 1158612., 1164534., 1170456., 1178916., 1184856., 1190796.,
      1196736., 1205286., 1211244., 1217202., 1223160., 1231800., 1237776.,
      1243752., 1249728., 1162554., 1168548., 1174542., 1180536., 1189068.,
      1195080., 1201092., 1207104., 1215726., 1221756., 1227786., 1233816.,
      1242528., 1248576., 1254624., 1260672., 1172418., 1178484., 1184550.,
      1190616., 1199220., 1205304., 1211388., 1217472., 1226166., 1232268.,
      1238370., 1244472., 1253256., 1259376., 1265496., 1271616., 1182282.,
      1188420., 1194558., 1200696., 1209372., 1215528., 1221684., 1227840.,
      1236606., 1242780., 1248954., 1255128., 1263984., 1270176., 1276368.,
      1282560., 1192146., 1198356., 1204566., 1210776., 1219524., 1225752.,
      1231980., 1238208., 1247046., 1253292., 1259538., 1265784., 1274712.,
      1280976., 1287240., 1293504., 1251330., 1257972., 1264614., 1271256.,
      1280436., 1287096., 1293756., 1300416., 1309686., 1316364., 1323042.,
      1329720., 1339080., 1345776., 1352472., 1359168., 1261194., 1267908.,
      1274622., 1281336., 1290588., 1297320., 1304052., 1310784., 1320126.,
      1326876., 1333626., 1340376., 1349808., 1356576., 1363344., 1370112.,
      1271058., 1277844., 1284630., 1291416., 1300740., 1307544., 1314348.,
      1321152., 1330566., 1337388., 1344210., 1351032., 1360536., 1367376.,
      1374216., 1381056., 1280922., 1287780., 1294638., 1301496., 1310892.,
      1317768., 1324644., 1331520., 1341006., 1347900., 1354794., 1361688.,
      1371264., 1378176., 1385088., 1392000., 1290786., 1297716., 1304646.,
      1311576., 1321044., 1327992., 1334940., 1341888., 1351446., 1358412.,
      1365378., 1372344., 1381992., 1388976., 1395960., 1402944., 1349970.,
      1357332., 1364694., 1372056., 1381956., 1389336., 1396716., 1404096.,
      1414086., 1421484., 1428882., 1436280., 1446360., 1453776., 1461192.,
      1468608., 1359834., 1367268., 1374702., 1382136., 1392108., 1399560.,
      1407012., 1414464., 1424526., 1431996., 1439466., 1446936., 1457088.,
      1464576., 1472064., 1479552., 1369698., 1377204., 1384710., 1392216.,
      1402260., 1409784., 1417308., 1424832., 1434966., 1442508., 1450050.,
      1457592., 1467816., 1475376., 1482936., 1490496., 1379562., 1387140.,
      1394718., 1402296., 1412412., 1420008., 1427604., 1435200., 1445406.,
      1453020., 1460634., 1468248., 1478544., 1486176., 1493808., 1501440.,
      1389426., 1397076., 1404726., 1412376., 1422564., 1430232., 1437900.,
      1445568., 1455846., 1463532., 1471218., 1478904., 1489272., 1496976.,
      1504680., 1512384., 1448610., 1456692., 1464774., 1472856., 1483476.,
      1491576., 1499676., 1507776., 1518486., 1526604., 1534722., 1542840.,
      1553640., 1561776., 1569912., 1578048., 1458474., 1466628., 1474782.,
      1482936., 1493628., 1501800., 1509972., 1518144., 1528926., 1537116.,
      1545306., 1553496., 1564368., 1572576., 1580784., 1588992., 1468338.,
      1476564., 1484790., 1493016., 1503780., 1512024., 1520268., 1528512.,
      1539366., 1547628., 1555890., 1564152., 1575096., 1583376., 1591656.,
      1599936., 1478202., 1486500., 1494798., 1503096., 1513932., 1522248.,
      1530564., 1538880., 1549806., 1558140., 1566474., 1574808., 1585824.,
      1594176., 1602528., 1610880., 1488066., 1496436., 1504806., 1513176.,
      1524084., 1532472., 1540860., 1549248., 1560246., 1568652., 1577058.,
      1585464., 1596552., 1604976., 1613400., 1621824., 1547250., 1556052.,
      1564854., 1573656., 1584996., 1593816., 1602636., 1611456., 1622886.,
      1631724., 1640562., 1649400., 1660920., 1669776., 1678632., 1687488.,
      1557114., 1565988., 1574862., 1583736., 1595148., 1604040., 1612932.,
      1621824., 1633326., 1642236., 1651146., 1660056., 1671648., 1680576.,
      1689504., 1698432., 1566978., 1575924., 1584870., 1593816., 1605300.,
      1614264., 1623228., 1632192., 1643766., 1652748., 1661730., 1670712.,
      1682376., 1691376., 1700376., 1709376., 1576842., 1585860., 1594878.,
      1603896., 1615452., 1624488., 1633524., 1642560., 1654206., 1663260.,
      1672314., 1681368., 1693104., 1702176., 1711248., 1720320., 1586706.,
      1595796., 1604886., 1613976., 1625604., 1634712., 1643820., 1652928.,
      1664646., 1673772., 1682898., 1692024., 1703832., 1712976., 1722120.,
      1731264.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75492.,  76221., 100212., 74034.,  74736.,  96072.,  96972.,
      127408., 94056., 94920.,  102372., 103272., 135640., 100104.,
      100968., 71199., 71820.,  94218.,  69444.,  70038.,  75546.,
      76167.,  99888., 73602.,  74196.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6952., 7030., 7108., 7186., 7264., 7498., 7576., 7654., 7732.,
      7810., 8044., 8122., 8200., 8278., 8356., 8590., 8668., 8746.,
      8824., 8902., 9136., 9214., 9292., 9370., 9448.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      148824., 150984., 150255., 152442., 197508., 200424., 145881., 148068.,
      147258., 149472., 189264., 192144., 191028., 193944., 250928., 254816.,
      185196., 188112., 186888., 189840., 201612., 204744., 203376., 206544.,
      267056., 271280., 197040., 200208., 198732., 201936., 140049., 142398.,
      141264., 143640., 185268., 188436., 136512., 138888., 137673., 140076.,
      148554., 151092., 149769., 152334., 196356., 199776., 144639., 147204.,
      145800., 148392.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13124., 13904., 13268., 14060., 13412., 14216., 13556., 14372., 13700.,
      14528., 14132., 14996., 14276., 15152., 14420., 15308., 14564., 15464.,
      14708., 15620., 15140., 16088., 15284., 16244., 15428., 16400., 15572.,
      16556., 15716., 16712., 16148., 17180., 16292., 17336., 16436., 17492.,
      16580., 17648., 16724., 17804., 17156., 18272., 17300., 18428., 17444.,
      18584., 17588., 18740., 17732., 18896.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      295488., 297648., 299808., 301968., 298323., 300510., 302697., 304884.,
      392100., 395016., 397932., 400848., 289575., 291762., 293949., 296136.,
      292302., 294516., 296730., 298944., 375648., 378528., 381408., 384288.,
      379140., 382056., 384972., 387888., 497968., 501856., 505744., 509632.,
      367476., 370392., 373308., 376224., 370824., 373776., 376728., 379680.,
      400092., 403224., 406356., 409488., 403584., 406752., 409920., 413088.,
      529888., 534112., 538336., 542560., 390912., 394080., 397248., 400416.,
      394260., 397464., 400668., 403872., 277749., 280098., 282447., 284796.,
      280152., 282528., 284904., 287280., 367368., 370536., 373704., 376872.,
      270648., 273024., 275400., 277776., 272943., 275346., 277749., 280152.,
      294570., 297108., 299646., 302184., 296973., 299538., 302103., 304668.,
      389292., 392712., 396132., 399552., 286713., 289278., 291843., 294408.,
      289008., 291600., 294192., 296784.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25468., 26248., 27028., 27808., 25744., 26536., 27328., 28120., 26020.,
      26824., 27628., 28432., 26296., 27112., 27928., 28744., 26572., 27400.,
      28228., 29056., 27400., 28264., 29128., 29992., 27676., 28552., 29428.,
      30304., 27952., 28840., 29728., 30616., 28228., 29128., 30028., 30928.,
      28504., 29416., 30328., 31240., 29332., 30280., 31228., 32176., 29608.,
      30568., 31528., 32488., 29884., 30856., 31828., 32800., 30160., 31144.,
      32128., 33112., 30436., 31432., 32428., 33424., 31264., 32296., 33328.,
      34360., 31540., 32584., 33628., 34672., 31816., 32872., 33928., 34984.,
      32092., 33160., 34228., 35296., 32368., 33448., 34528., 35608., 33196.,
      34312., 35428., 36544., 33472., 34600., 35728., 36856., 33748., 34888.,
      36028., 37168., 34024., 35176., 36328., 37480., 34300., 35464., 36628.,
      37792.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      296217., 301968., 299079., 304884., 393144., 400848., 290385., 296136.,
      293139., 298944., 376764., 384288., 380292., 387888., 499552., 509632.,
      368700., 376224., 372084., 379680., 401460., 409488., 404988., 413088.,
      531808., 542560., 392388., 400416., 395772., 403872., 278883., 284796.,
      281313., 287280., 368952., 376872., 271863., 277776., 274185., 280152.,
      295893., 302184., 298323., 304668., 391128., 399552., 288117., 294408.,
      290439., 296784.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      26104., 27808., 26392., 28120., 26680., 28432., 26968., 28744., 27256.,
      29056., 28120., 29992., 28408., 30304., 28696., 30616., 28984., 30928.,
      29272., 31240., 30136., 32176., 30424., 32488., 30712., 32800., 31000.,
      33112., 31288., 33424., 32152., 34360., 32440., 34672., 32728., 34984.,
      33016., 35296., 33304., 35608., 34168., 36544., 34456., 36856., 34744.,
      37168., 35032., 37480., 35320., 37792.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      588141.,  592434.,  599616.,  603936.,  593811., 598158., 605394.,
      609768.,  780492.,  786288.,  795864.,  801696., 576423., 580770.,
      587898.,  592272.,  581877.,  586278.,  593460., 597888., 747804.,
      753528.,  762816.,  768576.,  754788.,  760584., 769944., 775776.,
      991376.,  999104.,  1011488., 1019264., 731604., 737400., 746616.,
      752448.,  738300.,  744168.,  753456.,  759360., 796692., 802920.,
      812712.,  818976.,  803676.,  809976.,  819840., 826176., 1055216.,
      1063616., 1076672., 1085120., 778476.,  784776., 794496., 800832.,
      785172.,  791544.,  801336.,  807744.,  553095., 557766., 564894.,
      569592.,  557901.,  562626.,  569808.,  574560., 731604., 737904.,
      747408.,  753744.,  539001.,  543726.,  550800., 555552., 543591.,
      548370.,  555498.,  560304.,  586737.,  591786., 599292., 604368.,
      591543.,  596646.,  604206.,  609336.,  775452., 782256., 792264.,
      799104.,  571131.,  576234.,  583686.,  588816., 575721., 580878.,
      588384.,  593568.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      50660., 52208., 54056., 55616., 51212., 52784., 54656., 56240., 51764.,
      53360., 55256., 56864., 52316., 53936., 55856., 57488., 52868., 54512.,
      56456., 58112., 54524., 56240., 58256., 59984., 55076., 56816., 58856.,
      60608., 55628., 57392., 59456., 61232., 56180., 57968., 60056., 61856.,
      56732., 58544., 60656., 62480., 58388., 60272., 62456., 64352., 58940.,
      60848., 63056., 64976., 59492., 61424., 63656., 65600., 60044., 62000.,
      64256., 66224., 60596., 62576., 64856., 66848., 62252., 64304., 66656.,
      68720., 62804., 64880., 67256., 69344., 63356., 65456., 67856., 69968.,
      63908., 66032., 68456., 70592., 64460., 66608., 69056., 71216., 66116.,
      68336., 70856., 73088., 66668., 68912., 71456., 73712., 67220., 69488.,
      72056., 74336., 67772., 70064., 72656., 74960., 68324., 70640., 73256.,
      75584.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1171989., 1176282., 1180575., 1184868., 1194912., 1199232., 1203552.,
      1207872., 1183275., 1187622., 1191969., 1196316., 1206414., 1210788.,
      1215162., 1219536., 1555188., 1560984., 1566780., 1572576., 1585896.,
      1591728., 1597560., 1603392., 1148499., 1152846., 1157193., 1161540.,
      1171422., 1175796., 1180170., 1184544., 1159353., 1163754., 1168155.,
      1172556., 1182492., 1186920., 1191348., 1195776., 1489884., 1495608.,
      1501332., 1507056., 1519872., 1525632., 1531392., 1537152., 1503780.,
      1509576., 1515372., 1521168., 1534056., 1539888., 1545720., 1551552.,
      1975024., 1982752., 1990480., 1998208., 2015200., 2022976., 2030752.,
      2038528., 1457412., 1463208., 1469004., 1474800., 1487400., 1493232.,
      1499064., 1504896., 1470732., 1476600., 1482468., 1488336., 1501008.,
      1506912., 1512816., 1518720., 1587156., 1593384., 1599612., 1605840.,
      1619160., 1625424., 1631688., 1637952., 1601052., 1607352., 1613652.,
      1619952., 1633344., 1639680., 1646016., 1652352., 2102032., 2110432.,
      2118832., 2127232., 2144896., 2153344., 2161792., 2170240., 1550652.,
      1556952., 1563252., 1569552., 1582656., 1588992., 1595328., 1601664.,
      1563972., 1570344., 1576716., 1583088., 1596264., 1602672., 1609080.,
      1615488., 1101519., 1106190., 1110861., 1115532., 1125090., 1129788.,
      1134486., 1139184., 1111077., 1115802., 1120527., 1125252., 1134864.,
      1139616., 1144368., 1149120., 1456908., 1463208., 1469508., 1475808.,
      1488480., 1494816., 1501152., 1507488., 1073277., 1078002., 1082727.,
      1087452., 1096848., 1101600., 1106352., 1111104., 1082403., 1087182.,
      1091961., 1096740., 1106190., 1110996., 1115802., 1120608., 1168425.,
      1173474., 1178523., 1183572., 1193508., 1198584., 1203660., 1208736.,
      1177983., 1183086., 1188189., 1193292., 1203282., 1208412., 1213542.,
      1218672., 1544100., 1550904., 1557708., 1564512., 1577688., 1584528.,
      1591368., 1598208., 1137159., 1142262., 1147365., 1152468., 1162242.,
      1167372., 1172502., 1177632., 1146285., 1151442., 1156599., 1161756.,
      1171584., 1176768., 1181952., 1187136.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      99772.,  101320., 102868., 104416., 106552., 108112., 109672., 111232.,
      100852., 102424., 103996., 105568., 107728., 109312., 110896., 112480.,
      101932., 103528., 105124., 106720., 108904., 110512., 112120., 113728.,
      103012., 104632., 106252., 107872., 110080., 111712., 113344., 114976.,
      104092., 105736., 107380., 109024., 111256., 112912., 114568., 116224.,
      107332., 109048., 110764., 112480., 114784., 116512., 118240., 119968.,
      108412., 110152., 111892., 113632., 115960., 117712., 119464., 121216.,
      109492., 111256., 113020., 114784., 117136., 118912., 120688., 122464.,
      110572., 112360., 114148., 115936., 118312., 120112., 121912., 123712.,
      111652., 113464., 115276., 117088., 119488., 121312., 123136., 124960.,
      114892., 116776., 118660., 120544., 123016., 124912., 126808., 128704.,
      115972., 117880., 119788., 121696., 124192., 126112., 128032., 129952.,
      117052., 118984., 120916., 122848., 125368., 127312., 129256., 131200.,
      118132., 120088., 122044., 124000., 126544., 128512., 130480., 132448.,
      119212., 121192., 123172., 125152., 127720., 129712., 131704., 133696.,
      122452., 124504., 126556., 128608., 131248., 133312., 135376., 137440.,
      123532., 125608., 127684., 129760., 132424., 134512., 136600., 138688.,
      124612., 126712., 128812., 130912., 133600., 135712., 137824., 139936.,
      125692., 127816., 129940., 132064., 134776., 136912., 139048., 141184.,
      126772., 128920., 131068., 133216., 135952., 138112., 140272., 142432.,
      130012., 132232., 134452., 136672., 139480., 141712., 143944., 146176.,
      131092., 133336., 135580., 137824., 140656., 142912., 145168., 147424.,
      132172., 134440., 136708., 138976., 141832., 144112., 146392., 148672.,
      133252., 135544., 137836., 140128., 143008., 145312., 147616., 149920.,
      134332., 136648., 138964., 141280., 144184., 146512., 148840., 151168.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1173447., 1184868., 1196343., 1207872., 1184787., 1196316., 1207899.,
      1219536., 1557276., 1572576., 1587948., 1603392., 1150119., 1161540.,
      1173015., 1184544., 1161027., 1172556., 1184139., 1195776., 1492116.,
      1507056., 1522068., 1537152., 1506084., 1521168., 1536324., 1551552.,
      1978192., 1998208., 2018320., 2038528., 1459860., 1474800., 1489812.,
      1504896., 1473252., 1488336., 1503492., 1518720., 1589892., 1605840.,
      1621860., 1637952., 1603860., 1619952., 1636116., 1652352., 2105872.,
      2127232., 2148688., 2170240., 1553604., 1569552., 1585572., 1601664.,
      1566996., 1583088., 1599252., 1615488., 1103787., 1115532., 1127331.,
      1139184., 1113399., 1125252., 1137159., 1149120., 1460076., 1475808.,
      1491612., 1507488., 1075707., 1087452., 1099251., 1111104., 1084887.,
      1096740., 1108647., 1120608., 1171071., 1183572., 1196127., 1208736.,
      1180683., 1193292., 1205955., 1218672., 1547772., 1564512., 1581324.,
      1598208., 1139967., 1152468., 1165023., 1177632., 1149147., 1161756.,
      1174419., 1187136.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101044., 104416., 107812., 111232., 102148., 105568., 109012., 112480.,
      103252., 106720., 110212., 113728., 104356., 107872., 111412., 114976.,
      105460., 109024., 112612., 116224., 108772., 112480., 116212., 119968.,
      109876., 113632., 117412., 121216., 110980., 114784., 118612., 122464.,
      112084., 115936., 119812., 123712., 113188., 117088., 121012., 124960.,
      116500., 120544., 124612., 128704., 117604., 121696., 125812., 129952.,
      118708., 122848., 127012., 131200., 119812., 124000., 128212., 132448.,
      120916., 125152., 129412., 133696., 124228., 128608., 133012., 137440.,
      125332., 129760., 134212., 138688., 126436., 130912., 135412., 139936.,
      127540., 132064., 136612., 141184., 128644., 133216., 137812., 142432.,
      131956., 136672., 141412., 146176., 133060., 137824., 142612., 147424.,
      134164., 138976., 143812., 148672., 135268., 140128., 145012., 149920.,
      136372., 141280., 146212., 151168.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2338335., 2346894., 2361150., 2369736., 2384073., 2392686., 2407104.,
      2415744., 2360907., 2369574., 2383938., 2392632., 2407077., 2415798.,
      2430324., 2439072., 3102996., 3114552., 3133560., 3145152., 3164268.,
      3175896., 3195120., 3206784., 2291571., 2300238., 2314386., 2323080.,
      2337309., 2346030., 2360340., 2369088., 2313279., 2322054., 2336310.,
      2345112., 2359449., 2368278., 2382696., 2391552., 2972820., 2984232.,
      3002664., 3014112., 3032652., 3044136., 3062784., 3074304., 3000612.,
      3012168., 3030744., 3042336., 3061020., 3072648., 3091440., 3103104.,
      3940976., 3956384., 3980960., 3996416., 4021136., 4036640., 4061504.,
      4077056., 2908164., 2919720., 2938008., 2949600., 2967996., 2979624.,
      2998128., 3009792., 2934804., 2946504., 2964936., 2976672., 2995212.,
      3006984., 3025632., 3037440., 3167364., 3179784., 3199224., 3211680.,
      3231228., 3243720., 3263376., 3275904., 3195156., 3207720., 3227304.,
      3239904., 3259596., 3272232., 3292032., 3304704., 4194992., 4211744.,
      4237664., 4254464., 4280528., 4297376., 4323584., 4340480., 3094644.,
      3107208., 3126504., 3139104., 3158508., 3171144., 3190656., 3203328.,
      3121284., 3133992., 3153432., 3166176., 3185724., 3198504., 3218160.,
      3230976., 2198259., 2207574., 2221722., 2231064., 2245293., 2254662.,
      2268972., 2278368., 2217375., 2226798., 2241054., 2250504., 2264841.,
      2274318., 2288736., 2298240., 2907588., 2920152., 2939016., 2951616.,
      2970588., 2983224., 3002304., 3014976., 2141991., 2151414., 2165454.,
      2174904., 2189025., 2198502., 2212704., 2222208., 2160243., 2169774.,
      2183922., 2193480., 2207709., 2217294., 2231604., 2241216., 2332071.,
      2342142., 2357046., 2367144., 2382129., 2392254., 2407320., 2417472.,
      2351187., 2361366., 2376378., 2386584., 2401677., 2411910., 2427084.,
      2437344., 3081972., 3095544., 3115416., 3129024., 3149004., 3162648.,
      3182736., 3196416., 2269755., 2279934., 2294730., 2304936., 2319813.,
      2330046., 2345004., 2355264., 2288007., 2298294., 2313198., 2323512.,
      2338497., 2348838., 2363904., 2374272.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      199004., 202088., 205736., 208832., 212516., 215624., 219344., 222464.,
      201164., 204296., 207992., 211136., 214868., 218024., 221792., 224960.,
      203324., 206504., 210248., 213440., 217220., 220424., 224240., 227456.,
      205484., 208712., 212504., 215744., 219572., 222824., 226688., 229952.,
      207644., 210920., 214760., 218048., 221924., 225224., 229136., 232448.,
      214124., 217544., 221528., 224960., 228980., 232424., 236480., 239936.,
      216284., 219752., 223784., 227264., 231332., 234824., 238928., 242432.,
      218444., 221960., 226040., 229568., 233684., 237224., 241376., 244928.,
      220604., 224168., 228296., 231872., 236036., 239624., 243824., 247424.,
      222764., 226376., 230552., 234176., 238388., 242024., 246272., 249920.,
      229244., 233000., 237320., 241088., 245444., 249224., 253616., 257408.,
      231404., 235208., 239576., 243392., 247796., 251624., 256064., 259904.,
      233564., 237416., 241832., 245696., 250148., 254024., 258512., 262400.,
      235724., 239624., 244088., 248000., 252500., 256424., 260960., 264896.,
      237884., 241832., 246344., 250304., 254852., 258824., 263408., 267392.,
      244364., 248456., 253112., 257216., 261908., 266024., 270752., 274880.,
      246524., 250664., 255368., 259520., 264260., 268424., 273200., 277376.,
      248684., 252872., 257624., 261824., 266612., 270824., 275648., 279872.,
      250844., 255080., 259880., 264128., 268964., 273224., 278096., 282368.,
      253004., 257288., 262136., 266432., 271316., 275624., 280544., 284864.,
      259484., 263912., 268904., 273344., 278372., 282824., 287888., 292352.,
      261644., 266120., 271160., 275648., 280724., 285224., 290336., 294848.,
      263804., 268328., 273416., 277952., 283076., 287624., 292784., 297344.,
      265964., 270536., 275672., 280256., 285428., 290024., 295232., 299840.,
      268124., 272744., 277928., 282560., 287780., 292424., 297680., 302336.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4668111., 4676670., 4685229., 4693788., 4713714., 4722300., 4730886.,
      4739472., 4759533., 4768146., 4776759., 4785372., 4805568., 4814208.,
      4822848., 4831488., 4713147., 4721814., 4730481., 4739148., 4759182.,
      4767876., 4776570., 4785264., 4805433., 4814154., 4822875., 4831596.,
      4851900., 4860648., 4869396., 4878144., 6194436., 6205992., 6217548.,
      6229104., 6255528., 6267120., 6278712., 6290304., 6316908., 6328536.,
      6340164., 6351792., 6378576., 6390240., 6401904., 6413568., 4574475.,
      4583142., 4591809., 4600476., 4620078., 4628772., 4637466., 4646160.,
      4665897., 4674618., 4683339., 4692060., 4711932., 4720680., 4729428.,
      4738176., 4617783., 4626558., 4635333., 4644108., 4663818., 4672620.,
      4681422., 4690224., 4710069., 4718898., 4727727., 4736556., 4756536.,
      4765392., 4774248., 4783104., 5934228., 5945640., 5957052., 5968464.,
      5993880., 6005328., 6016776., 6028224., 6053820., 6065304., 6076788.,
      6088272., 6114048., 6125568., 6137088., 6148608., 5989668., 6001224.,
      6012780., 6024336., 6049896., 6061488., 6073080., 6084672., 6110412.,
      6122040., 6133668., 6145296., 6171216., 6182880., 6194544., 6206208.,
      7866544., 7881952., 7897360., 7912768., 7946464., 7961920., 7977376.,
      7992832., 8026768., 8042272., 8057776., 8073280., 8107456., 8123008.,
      8138560., 8154112., 5804772., 5816328., 5827884., 5839440., 5864424.,
      5876016., 5887608., 5899200., 5924364., 5935992., 5947620., 5959248.,
      5984592., 5996256., 6007920., 6019584., 5857908., 5869608., 5881308.,
      5893008., 5918136., 5929872., 5941608., 5953344., 5978652., 5990424.,
      6002196., 6013968., 6039456., 6051264., 6063072., 6074880., 6322308.,
      6334728., 6347148., 6359568., 6385992., 6398448., 6410904., 6423360.,
      6449964., 6462456., 6474948., 6487440., 6514224., 6526752., 6539280.,
      6551808., 6377748., 6390312., 6402876., 6415440., 6442008., 6454608.,
      6467208., 6479808., 6506556., 6519192., 6531828., 6544464., 6571392.,
      6584064., 6596736., 6609408., 8373232., 8389984., 8406736., 8423488.,
      8458528., 8475328., 8492128., 8508928., 8544208., 8561056., 8577904.,
      8594752., 8630272., 8647168., 8664064., 8680960., 6176724., 6189288.,
      6201852., 6214416., 6240408., 6253008., 6265608., 6278208., 6304380.,
      6317016., 6329652., 6342288., 6368640., 6381312., 6393984., 6406656.,
      6229860., 6242568., 6255276., 6267984., 6294120., 6306864., 6319608.,
      6332352., 6358668., 6371448., 6384228., 6397008., 6423504., 6436320.,
      6449136., 6461952., 4387203., 4396518., 4405833., 4415148., 4434102.,
      4443444., 4452786., 4462128., 4481217., 4490586., 4499955., 4509324.,
      4528548., 4537944., 4547340., 4556736., 4425327., 4434750., 4444173.,
      4453596., 4472658., 4482108., 4491558., 4501008., 4520205., 4529682.,
      4539159., 4548636., 4567968., 4577472., 4586976., 4596480., 5802612.,
      5815176., 5827740., 5840304., 5865432., 5878032., 5890632., 5903232.,
      5928540., 5941176., 5953812., 5966448., 5991936., 6004608., 6017280.,
      6029952., 4274559., 4283982., 4293405., 4302828., 4321458., 4330908.,
      4340358., 4349808., 4368573., 4378050., 4387527., 4397004., 4415904.,
      4425408., 4434912., 4444416., 4310955., 4320486., 4330017., 4339548.,
      4358286., 4367844., 4377402., 4386960., 4405833., 4415418., 4425003.,
      4434588., 4453596., 4463208., 4472820., 4482432., 4654071., 4664142.,
      4674213., 4684284., 4703994., 4714092., 4724190., 4734288., 4754133.,
      4764258., 4774383., 4784508., 4804488., 4814640., 4824792., 4834944.,
      4692195., 4702374., 4712553., 4722732., 4742550., 4752756., 4762962.,
      4773168., 4793121., 4803354., 4813587., 4823820., 4843908., 4854168.,
      4864428., 4874688., 6150372., 6163944., 6177516., 6191088., 6217224.,
      6230832., 6244440., 6258048., 6284364., 6298008., 6311652., 6325296.,
      6351792., 6365472., 6379152., 6392832., 4529331., 4539510., 4549689.,
      4559868., 4579254., 4589460., 4599666., 4609872., 4629393., 4639626.,
      4649859., 4660092., 4679748., 4690008., 4700268., 4710528., 4565727.,
      4576014., 4586301., 4596588., 4616082., 4626396., 4636710., 4647024.,
      4666653., 4676994., 4687335., 4697676., 4717440., 4727808., 4738176.,
      4748544.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      394924., 398008., 401092., 404176., 408376., 411472., 414568., 417664.,
      421924., 425032., 428140., 431248., 435568., 438688., 441808., 444928.,
      399196., 402328., 405460., 408592., 412840., 415984., 419128., 422272.,
      426580., 429736., 432892., 436048., 440416., 443584., 446752., 449920.,
      403468., 406648., 409828., 413008., 417304., 420496., 423688., 426880.,
      431236., 434440., 437644., 440848., 445264., 448480., 451696., 454912.,
      407740., 410968., 414196., 417424., 421768., 425008., 428248., 431488.,
      435892., 439144., 442396., 445648., 450112., 453376., 456640., 459904.,
      412012., 415288., 418564., 421840., 426232., 429520., 432808., 436096.,
      440548., 443848., 447148., 450448., 454960., 458272., 461584., 464896.,
      424828., 428248., 431668., 435088., 439624., 443056., 446488., 449920.,
      454516., 457960., 461404., 464848., 469504., 472960., 476416., 479872.,
      429100., 432568., 436036., 439504., 444088., 447568., 451048., 454528.,
      459172., 462664., 466156., 469648., 474352., 477856., 481360., 484864.,
      433372., 436888., 440404., 443920., 448552., 452080., 455608., 459136.,
      463828., 467368., 470908., 474448., 479200., 482752., 486304., 489856.,
      437644., 441208., 444772., 448336., 453016., 456592., 460168., 463744.,
      468484., 472072., 475660., 479248., 484048., 487648., 491248., 494848.,
      441916., 445528., 449140., 452752., 457480., 461104., 464728., 468352.,
      473140., 476776., 480412., 484048., 488896., 492544., 496192., 499840.,
      454732., 458488., 462244., 466000., 470872., 474640., 478408., 482176.,
      487108., 490888., 494668., 498448., 503440., 507232., 511024., 514816.,
      459004., 462808., 466612., 470416., 475336., 479152., 482968., 486784.,
      491764., 495592., 499420., 503248., 508288., 512128., 515968., 519808.,
      463276., 467128., 470980., 474832., 479800., 483664., 487528., 491392.,
      496420., 500296., 504172., 508048., 513136., 517024., 520912., 524800.,
      467548., 471448., 475348., 479248., 484264., 488176., 492088., 496000.,
      501076., 505000., 508924., 512848., 517984., 521920., 525856., 529792.,
      471820., 475768., 479716., 483664., 488728., 492688., 496648., 500608.,
      505732., 509704., 513676., 517648., 522832., 526816., 530800., 534784.,
      484636., 488728., 492820., 496912., 502120., 506224., 510328., 514432.,
      519700., 523816., 527932., 532048., 537376., 541504., 545632., 549760.,
      488908., 493048., 497188., 501328., 506584., 510736., 514888., 519040.,
      524356., 528520., 532684., 536848., 542224., 546400., 550576., 554752.,
      493180., 497368., 501556., 505744., 511048., 515248., 519448., 523648.,
      529012., 533224., 537436., 541648., 547072., 551296., 555520., 559744.,
      497452., 501688., 505924., 510160., 515512., 519760., 524008., 528256.,
      533668., 537928., 542188., 546448., 551920., 556192., 560464., 564736.,
      501724., 506008., 510292., 514576., 519976., 524272., 528568., 532864.,
      538324., 542632., 546940., 551248., 556768., 561088., 565408., 569728.,
      514540., 518968., 523396., 527824., 533368., 537808., 542248., 546688.,
      552292., 556744., 561196., 565648., 571312., 575776., 580240., 584704.,
      518812., 523288., 527764., 532240., 537832., 542320., 546808., 551296.,
      556948., 561448., 565948., 570448., 576160., 580672., 585184., 589696.,
      523084., 527608., 532132., 536656., 542296., 546832., 551368., 555904.,
      561604., 566152., 570700., 575248., 581008., 585568., 590128., 594688.,
      527356., 531928., 536500., 541072., 546760., 551344., 555928., 560512.,
      566260., 570856., 575452., 580048., 585856., 590464., 595072., 599680.,
      531628., 536248., 540868., 545488., 551224., 555856., 560488., 565120.,
      570916., 575560., 580204., 584848., 590704., 595360., 600016., 604672.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      86688.,  113970., 114924., 84906.,  85608.,  110304., 144920.,
      146096., 107856., 108720., 117504., 154328., 155504., 114768.,
      115632., 81720.,  107202., 108012., 79614.,  80208.,  86688.,
      113682., 114492., 84366.,  84960.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7922.,  8000.,  8078.,  8156.,  8234.,  8546.,  8624., 8702., 8780.,
      8858.,  9170.,  9248.,  9326.,  9404.,  9482.,  9794., 9872., 9950.,
      10028., 10106., 10418., 10496., 10574., 10652., 10730.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      170892., 173376., 224628., 227940., 226500., 229848., 167301., 169812.,
      168678., 171216., 217296., 220608., 285424., 289840., 287728., 292192.,
      212364., 215712., 214056., 217440., 231408., 235008., 303856., 308656.,
      306160., 311008., 225900., 229536., 227592., 231264., 160740., 163440.,
      210804., 214404., 212388., 216024., 156501., 159228., 157662., 160416.,
      170460., 173376., 223476., 227364., 225060., 228984., 165789., 168732.,
      166950., 169920.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14956., 15844., 15100., 16000., 15244., 16156., 15388., 16312., 15532.,
      16468., 16108., 17092., 16252., 17248., 16396., 17404., 16540., 17560.,
      16684., 17716., 17260., 18340., 17404., 18496., 17548., 18652., 17692.,
      18808., 17836., 18964., 18412., 19588., 18556., 19744., 18700., 19900.,
      18844., 20056., 18988., 20212., 19564., 20836., 19708., 20992., 19852.,
      21148., 19996., 21304., 20140., 21460.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      339300., 341784., 344268., 346752., 445944., 449256., 452568., 455880.,
      449652., 453000., 456348., 459696., 332091., 334602., 337113., 339624.,
      334818., 337356., 339894., 342432., 431280., 434592., 437904., 441216.,
      566432., 570848., 575264., 579680., 570992., 575456., 579920., 584384.,
      421380., 424728., 428076., 431424., 424728., 428112., 431496., 434880.,
      459216., 462816., 466416., 470016., 602912., 607712., 612512., 617312.,
      607472., 612320., 617168., 622016., 448164., 451800., 455436., 459072.,
      451512., 455184., 458856., 462528., 318780., 321480., 324180., 326880.,
      418008., 421608., 425208., 428808., 421140., 424776., 428412., 432048.,
      310275., 313002., 315729., 318456., 312570., 315324., 318078., 320832.,
      338004., 340920., 343836., 346752., 443064., 446952., 450840., 454728.,
      446196., 450120., 454044., 457968., 328635., 331578., 334521., 337464.,
      330930., 333900., 336870., 339840.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29024., 29912., 30800., 31688., 29300., 30200., 31100., 32000., 29576.,
      30488., 31400., 32312., 29852., 30776., 31700., 32624., 30128., 31064.,
      32000., 32936., 31232., 32216., 33200., 34184., 31508., 32504., 33500.,
      34496., 31784., 32792., 33800., 34808., 32060., 33080., 34100., 35120.,
      32336., 33368., 34400., 35432., 33440., 34520., 35600., 36680., 33716.,
      34808., 35900., 36992., 33992., 35096., 36200., 37304., 34268., 35384.,
      36500., 37616., 34544., 35672., 36800., 37928., 35648., 36824., 38000.,
      39176., 35924., 37112., 38300., 39488., 36200., 37400., 38600., 39800.,
      36476., 37688., 38900., 40112., 36752., 37976., 39200., 40424., 37856.,
      39128., 40400., 41672., 38132., 39416., 40700., 41984., 38408., 39704.,
      41000., 42296., 38684., 39992., 41300., 42608., 38960., 40280., 41600.,
      42920.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      340353., 346752., 447384., 455880., 451128., 459696., 333225., 339624.,
      335979., 342432., 432828., 441216., 568544., 579680., 573152., 584384.,
      423036., 431424., 426420., 434880., 461052., 470016., 605408., 617312.,
      610016., 622016., 450108., 459072., 453492., 462528., 320265., 326880.,
      420024., 428808., 423192., 432048., 311841., 318456., 314163., 320832.,
      339705., 346752., 445368., 454728., 448536., 457968., 330417., 337464.,
      332739., 339840.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29768., 31688., 30056., 32000., 30344., 32312., 30632., 32624., 30920.,
      32936., 32072., 34184., 32360., 34496., 32648., 34808., 32936., 35120.,
      33224., 35432., 34376., 36680., 34664., 36992., 34952., 37304., 35240.,
      37616., 35528., 37928., 36680., 39176., 36968., 39488., 37256., 39800.,
      37544., 40112., 37832., 40424., 38984., 41672., 39272., 41984., 39560.,
      42296., 39848., 42608., 40136., 42920.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      675765.,  680706.,  688536.,  693504.,  888180.,  894768.,  905136.,
      911760.,  895596.,  902256.,  912696.,  919392.,  661455.,  666450.,
      674226.,  679248.,  666909.,  671958.,  679788.,  684864.,  859068.,
      865656.,  875808.,  882432.,  1128304., 1137088., 1150528., 1159360.,
      1137424., 1146304., 1159840., 1168768., 839412.,  846072.,  856152.,
      862848.,  846108.,  852840.,  862992.,  869760.,  914940.,  922104.,
      932832.,  940032.,  1201264., 1210816., 1225024., 1234624., 1210384.,
      1220032., 1234336., 1244032., 892980.,  900216.,  910872.,  918144.,
      899676.,  906984.,  917712.,  925056.,  635157.,  640530.,  648360.,
      653760.,  832884.,  840048.,  850416.,  857616.,  839148.,  846384.,
      856824.,  864096.,  618255.,  623682.,  631458.,  636912.,  622845.,
      628326.,  636156.,  641664.,  673605.,  679410.,  687672.,  693504.,
      882996.,  890736.,  901680.,  909456.,  889260.,  897072.,  908088.,
      915936.,  654975.,  660834.,  669042.,  674928.,  659565.,  665478.,
      673740.,  679680.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      57772., 59536., 61600., 63376., 58324., 60112., 62200., 64000., 58876.,
      60688., 62800., 64624., 59428., 61264., 63400., 65248., 59980., 61840.,
      64000., 65872., 62188., 64144., 66400., 68368., 62740., 64720., 67000.,
      68992., 63292., 65296., 67600., 69616., 63844., 65872., 68200., 70240.,
      64396., 66448., 68800., 70864., 66604., 68752., 71200., 73360., 67156.,
      69328., 71800., 73984., 67708., 69904., 72400., 74608., 68260., 70480.,
      73000., 75232., 68812., 71056., 73600., 75856., 71020., 73360., 76000.,
      78352., 71572., 73936., 76600., 78976., 72124., 74512., 77200., 79600.,
      72676., 75088., 77800., 80224., 73228., 75664., 78400., 80848., 75436.,
      77968., 80800., 83344., 75988., 78544., 81400., 83968., 76540., 79120.,
      82000., 84592., 77092., 79696., 82600., 85216., 77644., 80272., 83200.,
      85840.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1346589., 1351530., 1356471., 1361412., 1372104., 1377072., 1382040.,
      1387008., 1769772., 1776360., 1782948., 1789536., 1803648., 1810272.,
      1816896., 1823520., 1784532., 1791192., 1797852., 1804512., 1818696.,
      1825392., 1832088., 1838784., 1317915., 1322910., 1327905., 1332900.,
      1343430., 1348452., 1353474., 1358496., 1328769., 1333818., 1338867.,
      1343916., 1354500., 1359576., 1364652., 1369728., 1711548., 1718136.,
      1724724., 1731312., 1744992., 1751616., 1758240., 1764864., 2247824.,
      2256608., 2265392., 2274176., 2292224., 2301056., 2309888., 2318720.,
      2265968., 2274848., 2283728., 2292608., 2310752., 2319680., 2328608.,
      2337536., 1672164., 1678824., 1685484., 1692144., 1705608., 1712304.,
      1719000., 1725696., 1685484., 1692216., 1698948., 1705680., 1719216.,
      1725984., 1732752., 1739520., 1822716., 1829880., 1837044., 1844208.,
      1858464., 1865664., 1872864., 1880064., 2392976., 2402528., 2412080.,
      2421632., 2440448., 2450048., 2459648., 2469248., 2411120., 2420768.,
      2430416., 2440064., 2458976., 2468672., 2478368., 2488064., 1778724.,
      1785960., 1793196., 1800432., 1814472., 1821744., 1829016., 1836288.,
      1792044., 1799352., 1806660., 1813968., 1828080., 1835424., 1842768.,
      1850112., 1264941., 1270314., 1275687., 1281060., 1291320., 1296720.,
      1302120., 1307520., 1658604., 1665768., 1672932., 1680096., 1693632.,
      1700832., 1708032., 1715232., 1671060., 1678296., 1685532., 1692768.,
      1706376., 1713648., 1720920., 1728192., 1231083., 1236510., 1241937.,
      1247364., 1257462., 1262916., 1268370., 1273824., 1240209., 1245690.,
      1251171., 1256652., 1266804., 1272312., 1277820., 1283328., 1341405.,
      1347210., 1353015., 1358820., 1369512., 1375344., 1381176., 1387008.,
      1758252., 1765992., 1773732., 1781472., 1795584., 1803360., 1811136.,
      1818912., 1770708., 1778520., 1786332., 1794144., 1808328., 1816176.,
      1824024., 1831872., 1304091., 1309950., 1315809., 1321668., 1332198.,
      1338084., 1343970., 1349856., 1313217., 1319130., 1325043., 1330956.,
      1341540., 1347480., 1353420., 1359360.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      113780., 115544., 117308., 119072., 121424., 123200., 124976., 126752.,
      114860., 116648., 118436., 120224., 122600., 124400., 126200., 128000.,
      115940., 117752., 119564., 121376., 123776., 125600., 127424., 129248.,
      117020., 118856., 120692., 122528., 124952., 126800., 128648., 130496.,
      118100., 119960., 121820., 123680., 126128., 128000., 129872., 131744.,
      122420., 124376., 126332., 128288., 130832., 132800., 134768., 136736.,
      123500., 125480., 127460., 129440., 132008., 134000., 135992., 137984.,
      124580., 126584., 128588., 130592., 133184., 135200., 137216., 139232.,
      125660., 127688., 129716., 131744., 134360., 136400., 138440., 140480.,
      126740., 128792., 130844., 132896., 135536., 137600., 139664., 141728.,
      131060., 133208., 135356., 137504., 140240., 142400., 144560., 146720.,
      132140., 134312., 136484., 138656., 141416., 143600., 145784., 147968.,
      133220., 135416., 137612., 139808., 142592., 144800., 147008., 149216.,
      134300., 136520., 138740., 140960., 143768., 146000., 148232., 150464.,
      135380., 137624., 139868., 142112., 144944., 147200., 149456., 151712.,
      139700., 142040., 144380., 146720., 149648., 152000., 154352., 156704.,
      140780., 143144., 145508., 147872., 150824., 153200., 155576., 157952.,
      141860., 144248., 146636., 149024., 152000., 154400., 156800., 159200.,
      142940., 145352., 147764., 150176., 153176., 155600., 158024., 160448.,
      144020., 146456., 148892., 151328., 154352., 156800., 159248., 161696.,
      148340., 150872., 153404., 155936., 159056., 161600., 164144., 166688.,
      149420., 151976., 154532., 157088., 160232., 162800., 165368., 167936.,
      150500., 153080., 155660., 158240., 161408., 164000., 166592., 169184.,
      151580., 154184., 156788., 159392., 162584., 165200., 167816., 170432.,
      152660., 155288., 157916., 160544., 163760., 166400., 169040., 171680.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1348695., 1361412., 1374183., 1387008., 1772652., 1789536., 1806492.,
      1823520., 1787484., 1804512., 1821612., 1838784., 1320183., 1332900.,
      1345671., 1358496., 1331091., 1343916., 1356795., 1369728., 1714644.,
      1731312., 1748052., 1764864., 2252048., 2274176., 2296400., 2318720.,
      2270288., 2292608., 2315024., 2337536., 1675476., 1692144., 1708884.,
      1725696., 1688868., 1705680., 1722564., 1739520., 1826388., 1844208.,
      1862100., 1880064., 2397968., 2421632., 2445392., 2469248., 2416208.,
      2440064., 2464016., 2488064., 1782612., 1800432., 1818324., 1836288.,
      1796004., 1813968., 1832004., 1850112., 1267911., 1281060., 1294263.,
      1307520., 1662636., 1680096., 1697628., 1715232., 1675164., 1692768.,
      1710444., 1728192., 1234215., 1247364., 1260567., 1273824., 1243395.,
      1256652., 1269963., 1283328., 1344807., 1358820., 1372887., 1387008.,
      1762860., 1781472., 1800156., 1818912., 1775388., 1794144., 1812972.,
      1831872., 1307655., 1321668., 1335735., 1349856., 1316835., 1330956.,
      1345131., 1359360.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      115268., 119072., 122900., 126752., 116372., 120224., 124100., 128000.,
      117476., 121376., 125300., 129248., 118580., 122528., 126500., 130496.,
      119684., 123680., 127700., 131744., 124100., 128288., 132500., 136736.,
      125204., 129440., 133700., 137984., 126308., 130592., 134900., 139232.,
      127412., 131744., 136100., 140480., 128516., 132896., 137300., 141728.,
      132932., 137504., 142100., 146720., 134036., 138656., 143300., 147968.,
      135140., 139808., 144500., 149216., 136244., 140960., 145700., 150464.,
      137348., 142112., 146900., 151712., 141764., 146720., 151700., 156704.,
      142868., 147872., 152900., 157952., 143972., 149024., 154100., 159200.,
      145076., 150176., 155300., 160448., 146180., 151328., 156500., 161696.,
      150596., 155936., 161300., 166688., 151700., 157088., 162500., 167936.,
      152804., 158240., 163700., 169184., 153908., 159392., 164900., 170432.,
      155012., 160544., 166100., 171680.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2687535., 2697390., 2712942., 2722824., 2738457., 2748366., 2764080.,
      2774016., 3532164., 3545304., 3565896., 3579072., 3599772., 3612984.,
      3633792., 3647040., 3561684., 3574968., 3595704., 3609024., 3629868.,
      3643224., 3664176., 3677568., 2630403., 2640366., 2655810., 2665800.,
      2681325., 2691342., 2706948., 2716992., 2652111., 2662182., 2677734.,
      2687832., 2703465., 2713590., 2729304., 2739456., 3416148., 3429288.,
      3449448., 3462624., 3482892., 3496104., 3516480., 3529728., 4486576.,
      4504096., 4530784., 4548352., 4575184., 4592800., 4619776., 4637440.,
      4522864., 4540576., 4567456., 4585216., 4612240., 4630048., 4657216.,
      4675072., 3337668., 3350952., 3370968., 3384288., 3404412., 3417768.,
      3438000., 3451392., 3364308., 3377736., 3397896., 3411360., 3431628.,
      3445128., 3465504., 3479040., 3638484., 3652776., 3674088., 3688416.,
      3709836., 3724200., 3745728., 3760128., 4776880., 4795936., 4824160.,
      4843264., 4871632., 4890784., 4919296., 4938496., 4813168., 4832416.,
      4860832., 4880128., 4908688., 4928032., 4956736., 4976128., 3550788.,
      3565224., 3586392., 3600864., 3622140., 3636648., 3658032., 3672576.,
      3577428., 3592008., 3613320., 3627936., 3649356., 3664008., 3685536.,
      3700224., 2525103., 2535822., 2551374., 2562120., 2577753., 2588526.,
      2604240., 2615040., 3310980., 3325272., 3345864., 3360192., 3380892.,
      3395256., 3416064., 3430464., 3335892., 3350328., 3371064., 3385536.,
      3406380., 3420888., 3441840., 3456384., 2457603., 2468430., 2483874.,
      2494728., 2510253., 2521134., 2536740., 2547648., 2475855., 2486790.,
      2502342., 2513304., 2528937., 2539926., 2555640., 2566656., 2678031.,
      2689614., 2706030., 2717640., 2734137., 2745774., 2762352., 2774016.,
      3510276., 3525720., 3547464., 3562944., 3584796., 3600312., 3622272.,
      3637824., 3535188., 3550776., 3572664., 3588288., 3610284., 3625944.,
      3648048., 3663744., 2603619., 2615310., 2631618., 2643336., 2659725.,
      2671470., 2687940., 2699712., 2621871., 2633670., 2650086., 2661912.,
      2678409., 2690262., 2706840., 2718720.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      227020., 230536., 234616., 238144., 242260., 245800., 249952., 253504.,
      229180., 232744., 236872., 240448., 244612., 248200., 252400., 256000.,
      231340., 234952., 239128., 242752., 246964., 250600., 254848., 258496.,
      233500., 237160., 241384., 245056., 249316., 253000., 257296., 260992.,
      235660., 239368., 243640., 247360., 251668., 255400., 259744., 263488.,
      244300., 248200., 252664., 256576., 261076., 265000., 269536., 273472.,
      246460., 250408., 254920., 258880., 263428., 267400., 271984., 275968.,
      248620., 252616., 257176., 261184., 265780., 269800., 274432., 278464.,
      250780., 254824., 259432., 263488., 268132., 272200., 276880., 280960.,
      252940., 257032., 261688., 265792., 270484., 274600., 279328., 283456.,
      261580., 265864., 270712., 275008., 279892., 284200., 289120., 293440.,
      263740., 268072., 272968., 277312., 282244., 286600., 291568., 295936.,
      265900., 270280., 275224., 279616., 284596., 289000., 294016., 298432.,
      268060., 272488., 277480., 281920., 286948., 291400., 296464., 300928.,
      270220., 274696., 279736., 284224., 289300., 293800., 298912., 303424.,
      278860., 283528., 288760., 293440., 298708., 303400., 308704., 313408.,
      281020., 285736., 291016., 295744., 301060., 305800., 311152., 315904.,
      283180., 287944., 293272., 298048., 303412., 308200., 313600., 318400.,
      285340., 290152., 295528., 300352., 305764., 310600., 316048., 320896.,
      287500., 292360., 297784., 302656., 308116., 313000., 318496., 323392.,
      296140., 301192., 306808., 311872., 317524., 322600., 328288., 333376.,
      298300., 303400., 309064., 314176., 319876., 325000., 330736., 335872.,
      300460., 305608., 311320., 316480., 322228., 327400., 333184., 338368.,
      302620., 307816., 313576., 318784., 324580., 329800., 335632., 340864.,
      304780., 310024., 315832., 321088., 326932., 332200., 338080., 343360.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5365215., 5375070., 5384925., 5394780., 5416002., 5425884., 5435766.,
      5445648., 5467005., 5476914., 5486823., 5496732., 5518224., 5528160.,
      5538096., 5548032., 7051188., 7064328., 7077468., 7090608., 7118616.,
      7131792., 7144968., 7158144., 7186332., 7199544., 7212756., 7225968.,
      7254336., 7267584., 7280832., 7294080., 7110084., 7123368., 7136652.,
      7149936., 7178088., 7191408., 7204728., 7218048., 7246380., 7259736.,
      7273092., 7286448., 7314960., 7328352., 7341744., 7355136., 5250843.,
      5260806., 5270769., 5280732., 5301630., 5311620., 5321610., 5331600.,
      5352633., 5362650., 5372667., 5382684., 5403852., 5413896., 5423940.,
      5433984., 5294151., 5304222., 5314293., 5324364., 5345370., 5355468.,
      5365566., 5375664., 5396805., 5406930., 5417055., 5427180., 5448456.,
      5458608., 5468760., 5478912., 6819156., 6832296., 6845436., 6858576.,
      6885720., 6898896., 6912072., 6925248., 6952572., 6965784., 6978996.,
      6992208., 7019712., 7032960., 7046208., 7059456., 8955632., 8973152.,
      8990672., 9008192., 9044000., 9061568., 9079136., 9096704., 9132752.,
      9150368., 9167984., 9185600., 9221888., 9239552., 9257216., 9274880.,
      9028016., 9045728., 9063440., 9081152., 9117152., 9134912., 9152672.,
      9170432., 9206672., 9224480., 9242288., 9260096., 9296576., 9314432.,
      9332288., 9350144., 6662052., 6675336., 6688620., 6701904., 6728616.,
      6741936., 6755256., 6768576., 6795468., 6808824., 6822180., 6835536.,
      6862608., 6876000., 6889392., 6902784., 6715188., 6728616., 6742044.,
      6755472., 6782328., 6795792., 6809256., 6822720., 6849756., 6863256.,
      6876756., 6890256., 6917472., 6931008., 6944544., 6958080., 7262676.,
      7276968., 7291260., 7305552., 7333848., 7348176., 7362504., 7376832.,
      7405308., 7419672., 7434036., 7448400., 7477056., 7491456., 7505856.,
      7520256., 9534704., 9553760., 9572816., 9591872., 9629216., 9648320.,
      9667424., 9686528., 9724112., 9743264., 9762416., 9781568., 9819392.,
      9838592., 9857792., 9876992., 9607088., 9626336., 9645584., 9664832.,
      9702368., 9721664., 9740960., 9760256., 9798032., 9817376., 9836720.,
      9856064., 9894080., 9913472., 9932864., 9952256., 7087140., 7101576.,
      7116012., 7130448., 7158312., 7172784., 7187256., 7201728., 7229772.,
      7244280., 7258788., 7273296., 7301520., 7316064., 7330608., 7345152.,
      7140276., 7154856., 7169436., 7184016., 7212024., 7226640., 7241256.,
      7255872., 7284060., 7298712., 7313364., 7328016., 7356384., 7371072.,
      7385760., 7400448., 5039487., 5050206., 5060925., 5071644., 5092002.,
      5102748., 5113494., 5124240., 5144733., 5155506., 5166279., 5177052.,
      5197680., 5208480., 5219280., 5230080., 6607668., 6621960., 6636252.,
      6650544., 6677400., 6691728., 6706056., 6720384., 6747420., 6761784.,
      6776148., 6790512., 6817728., 6832128., 6846528., 6860928., 6657348.,
      6671784., 6686220., 6700656., 6727656., 6742128., 6756600., 6771072.,
      6798252., 6812760., 6827268., 6841776., 6869136., 6883680., 6898224.,
      6912768., 4904379., 4915206., 4926033., 4936860., 4956894., 4967748.,
      4978602., 4989456., 5009625., 5020506., 5031387., 5042268., 5062572.,
      5073480., 5084388., 5095296., 4940775., 4951710., 4962645., 4973580.,
      4993722., 5004684., 5015646., 5026608., 5046885., 5057874., 5068863.,
      5079852., 5100264., 5111280., 5122296., 5133312., 5344479., 5356062.,
      5367645., 5379228., 5400450., 5412060., 5423670., 5435280., 5456637.,
      5468274., 5479911., 5491548., 5513040., 5524704., 5536368., 5548032.,
      7005108., 7020552., 7035996., 7051440., 7079448., 7094928., 7110408.,
      7125888., 7154076., 7169592., 7185108., 7200624., 7228992., 7244544.,
      7260096., 7275648., 7054788., 7070376., 7085964., 7101552., 7129704.,
      7145328., 7160952., 7176576., 7204908., 7220568., 7236228., 7251888.,
      7280400., 7296096., 7311792., 7327488., 5195547., 5207238., 5218929.,
      5230620., 5251518., 5263236., 5274954., 5286672., 5307705., 5319450.,
      5331195., 5342940., 5364108., 5375880., 5387652., 5399424., 5231943.,
      5243742., 5255541., 5267340., 5288346., 5300172., 5311998., 5323824.,
      5344965., 5356818., 5368671., 5380524., 5401800., 5413680., 5425560.,
      5437440.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      450524., 454040., 457556., 461072., 465704., 469232., 472760., 476288.,
      480980., 484520., 488060., 491600., 496352., 499904., 503456., 507008.,
      454796., 458360., 461924., 465488., 470168., 473744., 477320., 480896.,
      485636., 489224., 492812., 496400., 501200., 504800., 508400., 512000.,
      459068., 462680., 466292., 469904., 474632., 478256., 481880., 485504.,
      490292., 493928., 497564., 501200., 506048., 509696., 513344., 516992.,
      463340., 467000., 470660., 474320., 479096., 482768., 486440., 490112.,
      494948., 498632., 502316., 506000., 510896., 514592., 518288., 521984.,
      467612., 471320., 475028., 478736., 483560., 487280., 491000., 494720.,
      499604., 503336., 507068., 510800., 515744., 519488., 523232., 526976.,
      484700., 488600., 492500., 496400., 501416., 505328., 509240., 513152.,
      518228., 522152., 526076., 530000., 535136., 539072., 543008., 546944.,
      488972., 492920., 496868., 500816., 505880., 509840., 513800., 517760.,
      522884., 526856., 530828., 534800., 539984., 543968., 547952., 551936.,
      493244., 497240., 501236., 505232., 510344., 514352., 518360., 522368.,
      527540., 531560., 535580., 539600., 544832., 548864., 552896., 556928.,
      497516., 501560., 505604., 509648., 514808., 518864., 522920., 526976.,
      532196., 536264., 540332., 544400., 549680., 553760., 557840., 561920.,
      501788., 505880., 509972., 514064., 519272., 523376., 527480., 531584.,
      536852., 540968., 545084., 549200., 554528., 558656., 562784., 566912.,
      518876., 523160., 527444., 531728., 537128., 541424., 545720., 550016.,
      555476., 559784., 564092., 568400., 573920., 578240., 582560., 586880.,
      523148., 527480., 531812., 536144., 541592., 545936., 550280., 554624.,
      560132., 564488., 568844., 573200., 578768., 583136., 587504., 591872.,
      527420., 531800., 536180., 540560., 546056., 550448., 554840., 559232.,
      564788., 569192., 573596., 578000., 583616., 588032., 592448., 596864.,
      531692., 536120., 540548., 544976., 550520., 554960., 559400., 563840.,
      569444., 573896., 578348., 582800., 588464., 592928., 597392., 601856.,
      535964., 540440., 544916., 549392., 554984., 559472., 563960., 568448.,
      574100., 578600., 583100., 587600., 593312., 597824., 602336., 606848.,
      553052., 557720., 562388., 567056., 572840., 577520., 582200., 586880.,
      592724., 597416., 602108., 606800., 612704., 617408., 622112., 626816.,
      557324., 562040., 566756., 571472., 577304., 582032., 586760., 591488.,
      597380., 602120., 606860., 611600., 617552., 622304., 627056., 631808.,
      561596., 566360., 571124., 575888., 581768., 586544., 591320., 596096.,
      602036., 606824., 611612., 616400., 622400., 627200., 632000., 636800.,
      565868., 570680., 575492., 580304., 586232., 591056., 595880., 600704.,
      606692., 611528., 616364., 621200., 627248., 632096., 636944., 641792.,
      570140., 575000., 579860., 584720., 590696., 595568., 600440., 605312.,
      611348., 616232., 621116., 626000., 632096., 636992., 641888., 646784.,
      587228., 592280., 597332., 602384., 608552., 613616., 618680., 623744.,
      629972., 635048., 640124., 645200., 651488., 656576., 661664., 666752.,
      591500., 596600., 601700., 606800., 613016., 618128., 623240., 628352.,
      634628., 639752., 644876., 650000., 656336., 661472., 666608., 671744.,
      595772., 600920., 606068., 611216., 617480., 622640., 627800., 632960.,
      639284., 644456., 649628., 654800., 661184., 666368., 671552., 676736.,
      600044., 605240., 610436., 615632., 621944., 627152., 632360., 637568.,
      643940., 649160., 654380., 659600., 666032., 671264., 676496., 681728.,
      604316., 609560., 614804., 620048., 626408., 631664., 636920., 642176.,
      648596., 653864., 659132., 664400., 670880., 676160., 681440., 686720.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      179580., 221955., 223440., 176610., 177780., 228440., 282190.,
      284020., 224360., 225800., 243320., 300490., 302320., 238760.,
      240200., 169140., 208680., 209940., 165630., 166620., 179400.,
      221280., 222540., 175530., 176520.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21957., 22128., 22299., 22470., 22641., 23667., 23838., 24009., 24180.,
      24351., 25377., 25548., 25719., 25890., 26061., 27087., 27258., 27429.,
      27600., 27771., 28797., 28968., 29139., 29310., 29481.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      355020., 359160., 438735., 443910., 441660., 446880., 349044., 353220.,
      351348., 355560., 451360., 456880., 557480., 564380., 561080., 568040.,
      443152., 448720., 445984., 451600., 480640., 486640., 593480., 600980.,
      597080., 604640., 471472., 477520., 474304., 480400., 333780., 338280.,
      411735., 417360., 414210., 419880., 326724., 331260., 328668., 333240.,
      353940., 358800., 436485., 442560., 438960., 445080., 346164., 351060.,
      348108., 353040.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      42240., 43914., 42564., 44256., 42888., 44598., 43212., 44940., 43536.,
      45282., 45480., 47334., 45804., 47676., 46128., 48018., 46452., 48360.,
      46776., 48702., 48720., 50754., 49044., 51096., 49368., 51438., 49692.,
      51780., 50016., 52122., 51960., 54174., 52284., 54516., 52608., 54858.,
      52932., 55200., 53256., 55542., 55200., 57594., 55524., 57936., 55848.,
      58278., 56172., 58620., 56496., 58962.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      705900.,  710040.,  714180.,  718320.,  872295.,  877470.,  882645.,
      887820.,  878100.,  883320.,  888540.,  893760.,  693912.,  698088.,
      702264.,  706440.,  698484.,  702696.,  706908.,  711120.,  897200.,
      902720.,  908240.,  913760.,  1108060., 1114960., 1121860., 1128760.,
      1115200., 1122160., 1129120., 1136080., 880736.,  886304.,  891872.,
      897440.,  886352.,  891968.,  897584.,  903200.,  955280.,  961280.,
      967280.,  973280.,  1179460., 1186960., 1194460., 1201960., 1186600.,
      1194160., 1201720., 1209280., 936896.,  942944.,  948992.,  955040.,
      942512.,  948608.,  954704.,  960800.,  663060.,  667560.,  672060.,
      676560.,  817845.,  823470.,  829095.,  834720.,  822750.,  828420.,
      834090.,  839760.,  648912.,  653448.,  657984.,  662520.,  652764.,
      657336.,  661908.,  666480.,  703020.,  707880.,  712740.,  717600.,
      866895.,  872970.,  879045.,  885120.,  871800.,  877920.,  884040.,
      890160.,  687432.,  692328.,  697224.,  702120.,  691284.,  696216.,
      701148.,  706080.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      82806.,  84480.,  86154.,  87828.,  83436.,  85128.,  86820.,  88512.,
      84066.,  85776.,  87486.,  89196.,  84696.,  86424.,  88152.,  89880.,
      85326.,  87072.,  88818.,  90564.,  89106.,  90960.,  92814.,  94668.,
      89736.,  91608.,  93480.,  95352.,  90366.,  92256.,  94146.,  96036.,
      90996.,  92904.,  94812.,  96720.,  91626.,  93552.,  95478.,  97404.,
      95406.,  97440.,  99474.,  101508., 96036.,  98088.,  100140., 102192.,
      96666.,  98736.,  100806., 102876., 97296.,  99384.,  101472., 103560.,
      97926.,  100032., 102138., 104244., 101706., 103920., 106134., 108348.,
      102336., 104568., 106800., 109032., 102966., 105216., 107466., 109716.,
      103596., 105864., 108132., 110400., 104226., 106512., 108798., 111084.,
      108006., 110400., 112794., 115188., 108636., 111048., 113460., 115872.,
      109266., 111696., 114126., 116556., 109896., 112344., 114792., 117240.,
      110526., 112992., 115458., 117924.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      707664.,  718320.,  874545.,  887820.,  880395.,  893760.,  695784.,
      706440.,  700392.,  711120.,  899792.,  913760.,  1111360., 1128760.,
      1118560., 1136080., 883472.,  897440.,  889136.,  903200.,  958352.,
      973280.,  1183360., 1201960., 1190560., 1209280., 940112.,  955040.,
      945776.,  960800.,  665544.,  676560.,  820995.,  834720.,  825945.,
      839760.,  651504.,  662520.,  655392.,  666480.,  705864.,  717600.,
      870495.,  885120.,  875445.,  890160.,  690384.,  702120.,  694272.,
      706080.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      84156.,  87828.,  84804.,  88512.,  85452.,  89196.,  86100.,  89880.,
      86748.,  90564.,  90636.,  94668.,  91284.,  95352.,  91932.,  96036.,
      92580.,  96720.,  93228.,  97404.,  97116.,  101508., 97764.,  102192.,
      98412.,  102876., 99060.,  103560., 99708.,  104244., 103596., 108348.,
      104244., 109032., 104892., 109716., 105540., 110400., 106188., 111084.,
      110076., 115188., 110724., 115872., 111372., 116556., 112020., 117240.,
      112668., 117924.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1407084., 1415328., 1428360., 1436640., 1738785., 1749090., 1765290.,
      1775640., 1750395., 1760790., 1777080., 1787520., 1383252., 1391568.,
      1404528., 1412880., 1392396., 1400784., 1413816., 1422240., 1788592.,
      1799584., 1816480., 1827520., 2208980., 2222720., 2243720., 2257520.,
      2223260., 2237120., 2258240., 2272160., 1755856., 1766944., 1783744.,
      1794880., 1767088., 1778272., 1795168., 1806400., 1904752., 1916704.,
      1934560., 1946560., 2351780., 2366720., 2388920., 2403920., 2366060.,
      2381120., 2403440., 2418560., 1868176., 1880224., 1897984., 1910080.,
      1879408., 1891552., 1909408., 1921600., 1322124., 1331088., 1344120.,
      1353120., 1630785., 1641990., 1658190., 1669440., 1640595., 1651890.,
      1668180., 1679520., 1293972., 1303008., 1315968., 1325040., 1301676.,
      1310784., 1323816., 1332960., 1402044., 1411728., 1425480., 1435200.,
      1728885., 1740990., 1758090., 1770240., 1738695., 1750890., 1768080.,
      1780320., 1371012., 1380768., 1394448., 1404240., 1378716., 1388544.,
      1402296., 1412160.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      164982., 168312., 172308., 175656., 166242., 169608., 173640., 177024.,
      167502., 170904., 174972., 178392., 168762., 172200., 176304., 179760.,
      170022., 173496., 177636., 181128., 177582., 181272., 185628., 189336.,
      178842., 182568., 186960., 190704., 180102., 183864., 188292., 192072.,
      181362., 185160., 189624., 193440., 182622., 186456., 190956., 194808.,
      190182., 194232., 198948., 203016., 191442., 195528., 200280., 204384.,
      192702., 196824., 201612., 205752., 193962., 198120., 202944., 207120.,
      195222., 199416., 204276., 208488., 202782., 207192., 212268., 216696.,
      204042., 208488., 213600., 218064., 205302., 209784., 214932., 219432.,
      206562., 211080., 216264., 220800., 207822., 212376., 217596., 222168.,
      215382., 220152., 225588., 230376., 216642., 221448., 226920., 231744.,
      217902., 222744., 228252., 233112., 219162., 224040., 229584., 234480.,
      220422., 225336., 230916., 235848.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2805924., 2814168., 2822412., 2830656., 2848440., 2856720., 2865000.,
      2873280., 3467265., 3477570., 3487875., 3498180., 3520230., 3530580.,
      3540930., 3551280., 3490395., 3500790., 3511185., 3521580., 3543720.,
      3554160., 3564600., 3575040., 2758188., 2766504., 2774820., 2783136.,
      2800704., 2809056., 2817408., 2825760., 2776404., 2784792., 2793180.,
      2801568., 2819208., 2827632., 2836056., 2844480., 3566192., 3577184.,
      3588176., 3599168., 3621920., 3632960., 3644000., 3655040., 4404220.,
      4417960., 4431700., 4445440., 4473640., 4487440., 4501240., 4515040.,
      4432660., 4446520., 4460380., 4474240., 4502560., 4516480., 4530400.,
      4544320., 3500624., 3511712., 3522800., 3533888., 3556352., 3567488.,
      3578624., 3589760., 3522992., 3534176., 3545360., 3556544., 3579104.,
      3590336., 3601568., 3612800., 3797552., 3809504., 3821456., 3833408.,
      3857120., 3869120., 3881120., 3893120., 4688620., 4703560., 4718500.,
      4733440., 4762840., 4777840., 4792840., 4807840., 4717060., 4732120.,
      4747180., 4762240., 4791760., 4806880., 4822000., 4837120., 3724304.,
      3736352., 3748400., 3760448., 3783872., 3795968., 3808064., 3820160.,
      3746672., 3758816., 3770960., 3783104., 3806624., 3818816., 3831008.,
      3843200., 2635284., 2644248., 2653212., 2662176., 2679240., 2688240.,
      2697240., 2706240., 3250365., 3261570., 3272775., 3283980., 3305130.,
      3316380., 3327630., 3338880., 3269895., 3281190., 3292485., 3303780.,
      3325020., 3336360., 3347700., 3359040., 2578908., 2587944., 2596980.,
      2606016., 2622864., 2631936., 2641008., 2650080., 2594244., 2603352.,
      2612460., 2621568., 2638488., 2647632., 2656776., 2665920., 2794404.,
      2804088., 2813772., 2823456., 2841240., 2850960., 2860680., 2870400.,
      3445665., 3457770., 3469875., 3481980., 3504030., 3516180., 3528330.,
      3540480., 3465195., 3477390., 3489585., 3501780., 3523920., 3536160.,
      3548400., 3560640., 2732268., 2742024., 2751780., 2761536., 2779104.,
      2788896., 2798688., 2808480., 2747604., 2757432., 2767260., 2777088.,
      2794728., 2804592., 2814456., 2824320.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      326634., 329964., 333294., 336624., 341268., 344616., 347964., 351312.,
      329118., 332484., 335850., 339216., 343896., 347280., 350664., 354048.,
      331602., 335004., 338406., 341808., 346524., 349944., 353364., 356784.,
      334086., 337524., 340962., 344400., 349152., 352608., 356064., 359520.,
      336570., 340044., 343518., 346992., 351780., 355272., 358764., 362256.,
      351474., 355164., 358854., 362544., 367548., 371256., 374964., 378672.,
      353958., 357684., 361410., 365136., 370176., 373920., 377664., 381408.,
      356442., 360204., 363966., 367728., 372804., 376584., 380364., 384144.,
      358926., 362724., 366522., 370320., 375432., 379248., 383064., 386880.,
      361410., 365244., 369078., 372912., 378060., 381912., 385764., 389616.,
      376314., 380364., 384414., 388464., 393828., 397896., 401964., 406032.,
      378798., 382884., 386970., 391056., 396456., 400560., 404664., 408768.,
      381282., 385404., 389526., 393648., 399084., 403224., 407364., 411504.,
      383766., 387924., 392082., 396240., 401712., 405888., 410064., 414240.,
      386250., 390444., 394638., 398832., 404340., 408552., 412764., 416976.,
      401154., 405564., 409974., 414384., 420108., 424536., 428964., 433392.,
      403638., 408084., 412530., 416976., 422736., 427200., 431664., 436128.,
      406122., 410604., 415086., 419568., 425364., 429864., 434364., 438864.,
      408606., 413124., 417642., 422160., 427992., 432528., 437064., 441600.,
      411090., 415644., 420198., 424752., 430620., 435192., 439764., 444336.,
      425994., 430764., 435534., 440304., 446388., 451176., 455964., 460752.,
      428478., 433284., 438090., 442896., 449016., 453840., 458664., 463488.,
      430962., 435804., 440646., 445488., 451644., 456504., 461364., 466224.,
      433446., 438324., 443202., 448080., 454272., 459168., 464064., 468960.,
      435930., 440844., 445758., 450672., 456900., 461832., 466764., 471696.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2809452., 2830656., 2851932., 2873280., 3471765., 3498180., 3524685.,
      3551280., 3494985., 3521580., 3548265., 3575040., 2761932., 2783136.,
      2804412., 2825760., 2780220., 2801568., 2822988., 2844480., 3571376.,
      3599168., 3627056., 3655040., 4410820., 4445440., 4480180., 4515040.,
      4439380., 4474240., 4509220., 4544320., 3506096., 3533888., 3561776.,
      3589760., 3528560., 3556544., 3584624., 3612800., 3803696., 3833408.,
      3863216., 3893120., 4696420., 4733440., 4770580., 4807840., 4724980.,
      4762240., 4799620., 4837120., 3730736., 3760448., 3790256., 3820160.,
      3753200., 3783104., 3813104., 3843200., 2640252., 2662176., 2684172.,
      2706240., 3256665., 3283980., 3311385., 3338880., 3276285., 3303780.,
      3331365., 3359040., 2584092., 2606016., 2628012., 2650080., 2599500.,
      2621568., 2643708., 2665920., 2800092., 2823456., 2846892., 2870400.,
      3452865., 3481980., 3511185., 3540480., 3472485., 3501780., 3531165.,
      3560640., 2738172., 2761536., 2784972., 2808480., 2753580., 2777088.,
      2800668., 2824320.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      329334., 336624., 343950., 351312., 331854., 339216., 346614., 354048.,
      334374., 341808., 349278., 356784., 336894., 344400., 351942., 359520.,
      339414., 346992., 354606., 362256., 354534., 362544., 370590., 378672.,
      357054., 365136., 373254., 381408., 359574., 367728., 375918., 384144.,
      362094., 370320., 378582., 386880., 364614., 372912., 381246., 389616.,
      379734., 388464., 397230., 406032., 382254., 391056., 399894., 408768.,
      384774., 393648., 402558., 411504., 387294., 396240., 405222., 414240.,
      389814., 398832., 407886., 416976., 404934., 414384., 423870., 433392.,
      407454., 416976., 426534., 436128., 409974., 419568., 429198., 438864.,
      412494., 422160., 431862., 441600., 415014., 424752., 434526., 444336.,
      430134., 440304., 450510., 460752., 432654., 442896., 453174., 463488.,
      435174., 445488., 455838., 466224., 437694., 448080., 458502., 468960.,
      440214., 450672., 461166., 471696.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5602452., 5618904., 5644824., 5661312., 5687340., 5703864., 5730000.,
      5746560., 6922965., 6943530., 6975750., 6996360., 7028715., 7049370.,
      7081860., 7102560., 6969225., 6989970., 7022370., 7043160., 7075695.,
      7096530., 7129200., 7150080., 5507268., 5523864., 5549640., 5566272.,
      5592156., 5608824., 5634816., 5651520., 5543700., 5560440., 5586360.,
      5603136., 5629164., 5645976., 5672112., 5688960., 7120816., 7142752.,
      7176352., 7198336., 7232080., 7254112., 7288000., 7310080., 8794220.,
      8821640., 8863400., 8890880., 8932820., 8960360., 9002480., 9030080.,
      8851100., 8878760., 8920760., 8948480., 8990660., 9018440., 9060800.,
      9088640., 6990064., 7012192., 7045600., 7067776., 7101328., 7123552.,
      7157248., 7179520., 7034800., 7057120., 7090720., 7113088., 7146832.,
      7169248., 7203136., 7225600., 7583536., 7607392., 7642912., 7666816.,
      7702480., 7726432., 7762240., 7786240., 9363020., 9392840., 9437000.,
      9466880., 9511220., 9541160., 9585680., 9615680., 9419900., 9449960.,
      9494360., 9524480., 9569060., 9599240., 9644000., 9674240., 7437424.,
      7461472., 7496800., 7520896., 7556368., 7580512., 7616128., 7640320.,
      7482160., 7506400., 7541920., 7566208., 7601872., 7626208., 7662016.,
      7686400., 5262612., 5280504., 5306424., 5324352., 5350380., 5368344.,
      5394480., 5412480., 6490965., 6513330., 6545550., 6567960., 6600315.,
      6622770., 6655260., 6677760., 6530025., 6552570., 6584970., 6607560.,
      6640095., 6662730., 6695400., 6718080., 5150148., 5168184., 5193960.,
      5212032., 5237916., 5256024., 5282016., 5300160., 5180820., 5199000.,
      5224920., 5243136., 5269164., 5287416., 5313552., 5331840., 5580852.,
      5600184., 5627544., 5646912., 5674380., 5693784., 5721360., 5740800.,
      6881565., 6905730., 6939750., 6963960., 6998115., 7022370., 7056660.,
      7080960., 6920625., 6944970., 6979170., 7003560., 7037895., 7062330.,
      7096800., 7121280., 5456868., 5476344., 5503560., 5523072., 5550396.,
      5569944., 5597376., 5616960., 5487540., 5507160., 5534520., 5554176.,
      5581644., 5601336., 5628912., 5648640.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      652026., 658668., 666588., 673248., 681222., 687900., 695928., 702624.,
      656994., 663708., 671700., 678432., 686478., 693228., 701328., 708096.,
      661962., 668748., 676812., 683616., 691734., 698556., 706728., 713568.,
      666930., 673788., 681924., 688800., 696990., 703884., 712128., 719040.,
      671898., 678828., 687036., 693984., 702246., 709212., 717528., 724512.,
      701706., 709068., 717708., 725088., 733782., 741180., 749928., 757344.,
      706674., 714108., 722820., 730272., 739038., 746508., 755328., 762816.,
      711642., 719148., 727932., 735456., 744294., 751836., 760728., 768288.,
      716610., 724188., 733044., 740640., 749550., 757164., 766128., 773760.,
      721578., 729228., 738156., 745824., 754806., 762492., 771528., 779232.,
      751386., 759468., 768828., 776928., 786342., 794460., 803928., 812064.,
      756354., 764508., 773940., 782112., 791598., 799788., 809328., 817536.,
      761322., 769548., 779052., 787296., 796854., 805116., 814728., 823008.,
      766290., 774588., 784164., 792480., 802110., 810444., 820128., 828480.,
      771258., 779628., 789276., 797664., 807366., 815772., 825528., 833952.,
      801066., 809868., 819948., 828768., 838902., 847740., 857928., 866784.,
      806034., 814908., 825060., 833952., 844158., 853068., 863328., 872256.,
      811002., 819948., 830172., 839136., 849414., 858396., 868728., 877728.,
      815970., 824988., 835284., 844320., 854670., 863724., 874128., 883200.,
      820938., 830028., 840396., 849504., 859926., 869052., 879528., 888672.,
      850746., 860268., 871068., 880608., 891462., 901020., 911928., 921504.,
      855714., 865308., 876180., 885792., 896718., 906348., 917328., 926976.,
      860682., 870348., 881292., 890976., 901974., 911676., 922728., 932448.,
      865650., 875388., 886404., 896160., 907230., 917004., 928128., 937920.,
      870618., 880428., 891516., 901344., 912486., 922332., 933528., 943392.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2403044., 2411304., 2419564., 2427824., 2445256., 2453552., 2461848.,
      2470144., 2487756., 2496088., 2504420., 2512752., 2530544., 2538912.,
      2547280., 2555648., 3096405., 3106730., 3117055., 3127380., 3149194.,
      3159564., 3169934., 3180304., 3202343., 3212758., 3223173., 3233588.,
      3255852., 3266312., 3276772., 3287232., 3141641., 3152146., 3162651.,
      3173156., 3195150., 3205700., 3216250., 3226800., 3249019., 3259614.,
      3270209., 3280804., 3303248., 3313888., 3324528., 3335168., 2538676.,
      2547080., 2555484., 2563888., 2581400., 2589840., 2598280., 2606720.,
      2624412., 2632888., 2641364., 2649840., 2667712., 2676224., 2684736.,
      2693248., 2574532., 2583080., 2591628., 2600176., 2617832., 2626416.,
      2635000., 2643584., 2661420., 2670040., 2678660., 2687280., 2705296.,
      2713952., 2722608., 2731264., 3353520., 3365216., 3376912., 3388608.,
      3411808., 3423552., 3435296., 3447040., 3470480., 3482272., 3494064.,
      3505856., 3529536., 3541376., 3553216., 3565056., 4250044., 4264152.,
      4278260., 4292368., 4320760., 4334928., 4349096., 4363264., 4391956.,
      4406184., 4420412., 4434640., 4463632., 4477920., 4492208., 4506496.,
      4306220., 4320568., 4334916., 4349264., 4377896., 4392304., 4406712.,
      4421120., 4450052., 4464520., 4478988., 4493456., 4522688., 4537216.,
      4551744., 4566272., 3454320., 3465696., 3477072., 3488448., 3511072.,
      3522496., 3533920., 3545344., 3568208., 3579680., 3591152., 3602624.,
      3625728., 3637248., 3648768., 3660288., 3498544., 3510112., 3521680.,
      3533248., 3556064., 3567680., 3579296., 3590912., 3613968., 3625632.,
      3637296., 3648960., 3672256., 3683968., 3695680., 3707392., 3525424.,
      3536992., 3548560., 3560128., 3583200., 3594816., 3606432., 3618048.,
      3641360., 3653024., 3664688., 3676352., 3699904., 3711616., 3723328.,
      3735040., 4301852., 4316312., 4330772., 4345232., 4373976., 4388496.,
      4403016., 4417536., 4446580., 4461160., 4475740., 4490320., 4519664.,
      4534304., 4548944., 4563584., 4358028., 4372728., 4387428., 4402128.,
      4431112., 4445872., 4460632., 4475392., 4504676., 4519496., 4534316.,
      4549136., 4578720., 4593600., 4608480., 4623360., 3395312., 3407072.,
      3418832., 3430592., 3453600., 3465408., 3477216., 3489024., 3512272.,
      3524128., 3535984., 3547840., 3571328., 3583232., 3595136., 3607040.,
      3439536., 3451488., 3463440., 3475392., 3498592., 3510592., 3522592.,
      3534592., 3558032., 3570080., 3582128., 3594176., 3617856., 3629952.,
      3642048., 3654144., 2784836., 2794536., 2804236., 2813936., 2831976.,
      2841712., 2851448., 2861184., 2879404., 2889176., 2898948., 2908720.,
      2927120., 2936928., 2946736., 2956544., 3170637., 3182250., 3193863.,
      3205476., 3227538., 3239196., 3250854., 3262512., 3284799., 3296502.,
      3308205., 3319908., 3342420., 3354168., 3365916., 3377664., 3211713.,
      3223506., 3235299., 3247092., 3269334., 3281172., 3293010., 3304848.,
      3327315., 3339198., 3351081., 3362964., 3385656., 3397584., 3409512.,
      3421440., 2463508., 2472840., 2482172., 2491504., 2509112., 2518480.,
      2527848., 2537216., 2555004., 2564408., 2573812., 2583216., 2601184.,
      2610624., 2620064., 2629504., 2496036., 2505512., 2514988., 2524464.,
      2542216., 2551728., 2561240., 2570752., 2588684., 2598232., 2607780.,
      2617328., 2635440., 2645024., 2654608., 2664192., 2209508., 2218600.,
      2227692., 2236784., 2254216., 2263344., 2272472., 2281600., 2299212.,
      2308376., 2317540., 2326704., 2344496., 2353696., 2362896., 2372096.,
      2710997., 2722362., 2733727., 2745092., 2766906., 2778316., 2789726.,
      2801136., 2823175., 2834630., 2846085., 2857540., 2879804., 2891304.,
      2902804., 2914304., 2752073., 2763618., 2775163., 2786708., 2808702.,
      2820292., 2831882., 2843472., 2865691., 2877326., 2888961., 2900596.,
      2923040., 2934720., 2946400., 2958080., 2148276., 2157512., 2166748.,
      2175984., 2193496., 2202768., 2212040., 2221312., 2239004., 2248312.,
      2257620., 2266928., 2284800., 2294144., 2303488., 2312832., 2180804.,
      2190184., 2199564., 2208944., 2226600., 2236016., 2245432., 2254848.,
      2272684., 2282136., 2291588., 2301040., 2319056., 2328544., 2338032.,
      2347520.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1297410., 1304052., 1310694., 1317336., 1326516., 1333176., 1339836.,
      1346496., 1355766., 1362444., 1369122., 1375800., 1385160., 1391856.,
      1398552., 1405248., 1307274., 1313988., 1320702., 1327416., 1336668.,
      1343400., 1350132., 1356864., 1366206., 1372956., 1379706., 1386456.,
      1395888., 1402656., 1409424., 1416192., 1317138., 1323924., 1330710.,
      1337496., 1346820., 1353624., 1360428., 1367232., 1376646., 1383468.,
      1390290., 1397112., 1406616., 1413456., 1420296., 1427136., 1327002.,
      1333860., 1340718., 1347576., 1356972., 1363848., 1370724., 1377600.,
      1387086., 1393980., 1400874., 1407768., 1417344., 1424256., 1431168.,
      1438080., 1336866., 1343796., 1350726., 1357656., 1367124., 1374072.,
      1381020., 1387968., 1397526., 1404492., 1411458., 1418424., 1428072.,
      1435056., 1442040., 1449024., 1396050., 1403412., 1410774., 1418136.,
      1428036., 1435416., 1442796., 1450176., 1460166., 1467564., 1474962.,
      1482360., 1492440., 1499856., 1507272., 1514688., 1405914., 1413348.,
      1420782., 1428216., 1438188., 1445640., 1453092., 1460544., 1470606.,
      1478076., 1485546., 1493016., 1503168., 1510656., 1518144., 1525632.,
      1415778., 1423284., 1430790., 1438296., 1448340., 1455864., 1463388.,
      1470912., 1481046., 1488588., 1496130., 1503672., 1513896., 1521456.,
      1529016., 1536576., 1425642., 1433220., 1440798., 1448376., 1458492.,
      1466088., 1473684., 1481280., 1491486., 1499100., 1506714., 1514328.,
      1524624., 1532256., 1539888., 1547520., 1435506., 1443156., 1450806.,
      1458456., 1468644., 1476312., 1483980., 1491648., 1501926., 1509612.,
      1517298., 1524984., 1535352., 1543056., 1550760., 1558464., 1494690.,
      1502772., 1510854., 1518936., 1529556., 1537656., 1545756., 1553856.,
      1564566., 1572684., 1580802., 1588920., 1599720., 1607856., 1615992.,
      1624128., 1504554., 1512708., 1520862., 1529016., 1539708., 1547880.,
      1556052., 1564224., 1575006., 1583196., 1591386., 1599576., 1610448.,
      1618656., 1626864., 1635072., 1514418., 1522644., 1530870., 1539096.,
      1549860., 1558104., 1566348., 1574592., 1585446., 1593708., 1601970.,
      1610232., 1621176., 1629456., 1637736., 1646016., 1524282., 1532580.,
      1540878., 1549176., 1560012., 1568328., 1576644., 1584960., 1595886.,
      1604220., 1612554., 1620888., 1631904., 1640256., 1648608., 1656960.,
      1534146., 1542516., 1550886., 1559256., 1570164., 1578552., 1586940.,
      1595328., 1606326., 1614732., 1623138., 1631544., 1642632., 1651056.,
      1659480., 1667904., 1593330., 1602132., 1610934., 1619736., 1631076.,
      1639896., 1648716., 1657536., 1668966., 1677804., 1686642., 1695480.,
      1707000., 1715856., 1724712., 1733568., 1603194., 1612068., 1620942.,
      1629816., 1641228., 1650120., 1659012., 1667904., 1679406., 1688316.,
      1697226., 1706136., 1717728., 1726656., 1735584., 1744512., 1613058.,
      1622004., 1630950., 1639896., 1651380., 1660344., 1669308., 1678272.,
      1689846., 1698828., 1707810., 1716792., 1728456., 1737456., 1746456.,
      1755456., 1622922., 1631940., 1640958., 1649976., 1661532., 1670568.,
      1679604., 1688640., 1700286., 1709340., 1718394., 1727448., 1739184.,
      1748256., 1757328., 1766400., 1632786., 1641876., 1650966., 1660056.,
      1671684., 1680792., 1689900., 1699008., 1710726., 1719852., 1728978.,
      1738104., 1749912., 1759056., 1768200., 1777344., 1691970., 1701492.,
      1711014., 1720536., 1732596., 1742136., 1751676., 1761216., 1773366.,
      1782924., 1792482., 1802040., 1814280., 1823856., 1833432., 1843008.,
      1701834., 1711428., 1721022., 1730616., 1742748., 1752360., 1761972.,
      1771584., 1783806., 1793436., 1803066., 1812696., 1825008., 1834656.,
      1844304., 1853952., 1711698., 1721364., 1731030., 1740696., 1752900.,
      1762584., 1772268., 1781952., 1794246., 1803948., 1813650., 1823352.,
      1835736., 1845456., 1855176., 1864896., 1721562., 1731300., 1741038.,
      1750776., 1763052., 1772808., 1782564., 1792320., 1804686., 1814460.,
      1824234., 1834008., 1846464., 1856256., 1866048., 1875840., 1731426.,
      1741236., 1751046., 1760856., 1773204., 1783032., 1792860., 1802688.,
      1815126., 1824972., 1834818., 1844664., 1857192., 1867056., 1876920.,
      1886784.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      156156., 157344., 207400., 153672., 154824., 187995., 189390.,
      249530., 184800., 186150., 197760., 199155., 262340., 194250.,
      195600., 148920., 149964., 197392., 146040., 147048., 156228.,
      157272., 206968., 153096., 154104.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20091., 20262., 20433., 20604., 20775., 21288., 21459., 21630., 21801.,
      21972., 22485., 22656., 22827., 22998., 23169., 23682., 23853., 24024.,
      24195., 24366., 24879., 25050., 25221., 25392., 25563.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      308676., 312312., 311016., 314688., 409904., 414800., 303672., 307344.,
      305940., 309648., 371445., 375990., 374190., 378780., 492940., 499060.,
      365010., 369600., 367665., 372300., 390660., 395520., 393405., 398310.,
      518140., 524680., 383595., 388500., 386250., 391200., 293952., 297840.,
      296004., 299928., 389552., 394784., 288156., 292080., 290136., 294096.,
      308316., 312456., 310368., 314544., 408368., 413936., 302016., 306192.,
      303996., 308208.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38634., 40182., 38958., 40524., 39282., 40866., 39606., 41208., 39930.,
      41550., 40902., 42576., 41226., 42918., 41550., 43260., 41874., 43602.,
      42198., 43944., 43170., 44970., 43494., 45312., 43818., 45654., 44142.,
      45996., 44466., 46338., 45438., 47364., 45762., 47706., 46086., 48048.,
      46410., 48390., 46734., 48732., 47706., 49758., 48030., 50100., 48354.,
      50442., 48678., 50784., 49002., 51126.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      613716.,  617352.,  620988.,  624624., 618360., 622032., 625704.,
      629376.,  814912.,  819808.,  824704., 829600., 603672., 607344.,
      611016.,  614688.,  608172.,  611880., 615588., 619296., 738345.,
      742890.,  747435.,  751980.,  743790., 748380., 752970., 757560.,
      979760.,  985880.,  992000.,  998120., 725430., 730020., 734610.,
      739200.,  730695.,  735330.,  739965., 744600., 776460., 781320.,
      786180.,  791040.,  781905.,  786810., 791715., 796620., 1029740.,
      1036280., 1042820., 1049360., 762285., 767190., 772095., 777000.,
      767550.,  772500.,  777450.,  782400., 584016., 587904., 591792.,
      595680.,  588084.,  592008.,  595932., 599856., 773872., 779104.,
      784336.,  789568.,  572388.,  576312., 580236., 584160., 576312.,
      580272.,  584232.,  588192.,  612492., 616632., 620772., 624912.,
      616560.,  620736.,  624912.,  629088., 811168., 816736., 822304.,
      827872.,  599856.,  604032.,  608208., 612384., 603780., 607992.,
      612204.,  616416.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75720., 77268., 78816.,  80364.,  76350., 77916., 79482., 81048.,
      76980., 78564., 80148.,  81732.,  77610., 79212., 80814., 82416.,
      78240., 79860., 81480.,  83100.,  80130., 81804., 83478., 85152.,
      80760., 82452., 84144.,  85836.,  81390., 83100., 84810., 86520.,
      82020., 83748., 85476.,  87204.,  82650., 84396., 86142., 87888.,
      84540., 86340., 88140.,  89940.,  85170., 86988., 88806., 90624.,
      85800., 87636., 89472.,  91308.,  86430., 88284., 90138., 91992.,
      87060., 88932., 90804.,  92676.,  88950., 90876., 92802., 94728.,
      89580., 91524., 93468.,  95412.,  90210., 92172., 94134., 96096.,
      90840., 92820., 94800.,  96780.,  91470., 93468., 95466., 97464.,
      93360., 95412., 97464.,  99516.,  93990., 96060., 98130., 100200.,
      94620., 96708., 98796.,  100884., 95250., 97356., 99462., 101568.,
      95880., 98004., 100128., 102252.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      615012.,  624624.,  619692., 629376., 816736., 829600., 605076., 614688.,
      609612.,  619296.,  740145., 751980., 745635., 757560., 982280., 998120.,
      727365.,  739200.,  732675., 744600., 778575., 791040., 784065., 796620.,
      1032680., 1049360., 764535., 777000., 769845., 782400., 585852., 595680.,
      589956.,  599856.,  776416., 789568., 574332., 584160., 578292., 588192.,
      614580.,  624912.,  618684., 629088., 814048., 827872., 602052., 612384.,
      606012.,  616416.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76944.,  80364., 77592.,  81048., 78240., 81732., 78888., 82416.,  79536.,
      83100.,  81480., 85152.,  82128., 85836., 82776., 86520., 83424.,  87204.,
      84072.,  87888., 86016.,  89940., 86664., 90624., 87312., 91308.,  87960.,
      91992.,  88608., 92676.,  90552., 94728., 91200., 95412., 91848.,  96096.,
      92496.,  96780., 93144.,  97464., 95088., 99516., 95736., 100200., 96384.,
      100884., 97032., 101568., 97680., 102252.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1222788., 1230024., 1241976., 1249248., 1232076., 1239384., 1251408.,
      1258752., 1623728., 1633472., 1649408., 1659200., 1202844., 1210152.,
      1222032., 1229376., 1211844., 1219224., 1231176., 1238592., 1471245.,
      1480290., 1494870., 1503960., 1482135., 1491270., 1505940., 1515120.,
      1952380., 1964560., 1984000., 1996240., 1445595., 1454730., 1469220.,
      1478400., 1456125., 1465350., 1479930., 1489200., 1547475., 1557150.,
      1572360., 1582080., 1558365., 1568130., 1583430., 1593240., 2052340.,
      2065360., 2085640., 2098720., 1519305., 1529070., 1544190., 1554000.,
      1529835., 1539690., 1554900., 1564800., 1163964., 1171704., 1183584.,
      1191360., 1172100., 1179912., 1191864., 1199712., 1542416., 1552832.,
      1568672., 1579136., 1140852., 1148664., 1160472., 1168320., 1148700.,
      1156584., 1168464., 1176384., 1220916., 1229160., 1241544., 1249824.,
      1229052., 1237368., 1249824., 1258176., 1617008., 1628096., 1644608.,
      1655744., 1195788., 1204104., 1216416., 1224768., 1203636., 1212024.,
      1224408., 1232832.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150810., 153888., 157632., 160728., 152070., 155184., 158964., 162096.,
      153330., 156480., 160296., 163464., 154590., 157776., 161628., 164832.,
      155850., 159072., 162960., 166200., 159630., 162960., 166956., 170304.,
      160890., 164256., 168288., 171672., 162150., 165552., 169620., 173040.,
      163410., 166848., 170952., 174408., 164670., 168144., 172284., 175776.,
      168450., 172032., 176280., 179880., 169710., 173328., 177612., 181248.,
      170970., 174624., 178944., 182616., 172230., 175920., 180276., 183984.,
      173490., 177216., 181608., 185352., 177270., 181104., 185604., 189456.,
      178530., 182400., 186936., 190824., 179790., 183696., 188268., 192192.,
      181050., 184992., 189600., 193560., 182310., 186288., 190932., 194928.,
      186090., 190176., 194928., 199032., 187350., 191472., 196260., 200400.,
      188610., 192768., 197592., 201768., 189870., 194064., 198924., 203136.,
      191130., 195360., 200256., 204504.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2438340., 2445576., 2452812., 2460048., 2476680., 2483952., 2491224.,
      2498496., 2456844., 2464152., 2471460., 2478768., 2495472., 2502816.,
      2510160., 2517504., 3237712., 3247456., 3257200., 3266944., 3289024.,
      3298816., 3308608., 3318400., 2398380., 2405688., 2412996., 2420304.,
      2436720., 2444064., 2451408., 2458752., 2416308., 2423688., 2431068.,
      2438448., 2454936., 2462352., 2469768., 2477184., 2933445., 2942490.,
      2951535., 2960580., 2980650., 2989740., 2998830., 3007920., 2955135.,
      2964270., 2973405., 2982540., 3002700., 3011880., 3021060., 3030240.,
      3892580., 3904760., 3916940., 3929120., 3955760., 3968000., 3980240.,
      3992480., 2882055., 2891190., 2900325., 2909460., 2929260., 2938440.,
      2947620., 2956800., 2903025., 2912250., 2921475., 2930700., 2950590.,
      2959860., 2969130., 2978400., 3085275., 3094950., 3104625., 3114300.,
      3135000., 3144720., 3154440., 3164160., 3106965., 3116730., 3126495.,
      3136260., 3157050., 3166860., 3176670., 3186480., 4091660., 4104680.,
      4117700., 4130720., 4158200., 4171280., 4184360., 4197440., 3028845.,
      3038610., 3048375., 3058140., 3078570., 3088380., 3098190., 3108000.,
      3049815., 3059670., 3069525., 3079380., 3099900., 3109800., 3119700.,
      3129600., 2320188., 2327928., 2335668., 2343408., 2359392., 2367168.,
      2374944., 2382720., 2336388., 2344200., 2352012., 2359824., 2375880.,
      2383728., 2391576., 2399424., 3074416., 3084832., 3095248., 3105664.,
      3126880., 3137344., 3147808., 3158272., 2273892., 2281704., 2289516.,
      2297328., 2313096., 2320944., 2328792., 2336640., 2289516., 2297400.,
      2305284., 2313168., 2329008., 2336928., 2344848., 2352768., 2433588.,
      2441832., 2450076., 2458320., 2474808., 2483088., 2491368., 2499648.,
      2449788., 2458104., 2466420., 2474736., 2491296., 2499648., 2508000.,
      2516352., 3222928., 3234016., 3245104., 3256192., 3278080., 3289216.,
      3300352., 3311488., 2383260., 2391576., 2399892., 2408208., 2424480.,
      2432832., 2441184., 2449536., 2398884., 2407272., 2415660., 2424048.,
      2440392., 2448816., 2457240., 2465664.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      298542., 301620., 304698., 307776., 312168., 315264., 318360., 321456.,
      301026., 304140., 307254., 310368., 314796., 317928., 321060., 324192.,
      303510., 306660., 309810., 312960., 317424., 320592., 323760., 326928.,
      305994., 309180., 312366., 315552., 320052., 323256., 326460., 329664.,
      308478., 311700., 314922., 318144., 322680., 325920., 329160., 332400.,
      315930., 319260., 322590., 325920., 330564., 333912., 337260., 340608.,
      318414., 321780., 325146., 328512., 333192., 336576., 339960., 343344.,
      320898., 324300., 327702., 331104., 335820., 339240., 342660., 346080.,
      323382., 326820., 330258., 333696., 338448., 341904., 345360., 348816.,
      325866., 329340., 332814., 336288., 341076., 344568., 348060., 351552.,
      333318., 336900., 340482., 344064., 348960., 352560., 356160., 359760.,
      335802., 339420., 343038., 346656., 351588., 355224., 358860., 362496.,
      338286., 341940., 345594., 349248., 354216., 357888., 361560., 365232.,
      340770., 344460., 348150., 351840., 356844., 360552., 364260., 367968.,
      343254., 346980., 350706., 354432., 359472., 363216., 366960., 370704.,
      350706., 354540., 358374., 362208., 367356., 371208., 375060., 378912.,
      353190., 357060., 360930., 364800., 369984., 373872., 377760., 381648.,
      355674., 359580., 363486., 367392., 372612., 376536., 380460., 384384.,
      358158., 362100., 366042., 369984., 375240., 379200., 383160., 387120.,
      360642., 364620., 368598., 372576., 377868., 381864., 385860., 389856.,
      368094., 372180., 376266., 380352., 385752., 389856., 393960., 398064.,
      370578., 374700., 378822., 382944., 388380., 392520., 396660., 400800.,
      373062., 377220., 381378., 385536., 391008., 395184., 399360., 403536.,
      375546., 379740., 383934., 388128., 393636., 397848., 402060., 406272.,
      378030., 382260., 386490., 390720., 396264., 400512., 404760., 409008.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2440932., 2460048., 2479236., 2498496., 2459508., 2478768., 2498100.,
      2517504., 3241360., 3266944., 3292624., 3318400., 2401188., 2420304.,
      2439492., 2458752., 2419188., 2438448., 2457780., 2477184., 2937045.,
      2960580., 2984205., 3007920., 2958825., 2982540., 3006345., 3030240.,
      3897620., 3929120., 3960740., 3992480., 2885925., 2909460., 2933085.,
      2956800., 2906985., 2930700., 2954505., 2978400., 3089505., 3114300.,
      3139185., 3164160., 3111285., 3136260., 3161325., 3186480., 4097540.,
      4130720., 4164020., 4197440., 3033345., 3058140., 3083025., 3108000.,
      3054405., 3079380., 3104445., 3129600., 2323860., 2343408., 2363028.,
      2382720., 2340132., 2359824., 2379588., 2399424., 3079504., 3105664.,
      3131920., 3158272., 2277780., 2297328., 2316948., 2336640., 2293476.,
      2313168., 2332932., 2352768., 2437764., 2458320., 2478948., 2499648.,
      2454036., 2474736., 2495508., 2516352., 3228688., 3256192., 3283792.,
      3311488., 2387652., 2408208., 2428836., 2449536., 2403348., 2424048.,
      2444820., 2465664.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      300990., 307776., 314598., 321456., 303510., 310368., 317262., 324192.,
      306030., 312960., 319926., 326928., 308550., 315552., 322590., 329664.,
      311070., 318144., 325254., 332400., 318630., 325920., 333246., 340608.,
      321150., 328512., 335910., 343344., 323670., 331104., 338574., 346080.,
      326190., 333696., 341238., 348816., 328710., 336288., 343902., 351552.,
      336270., 344064., 351894., 359760., 338790., 346656., 354558., 362496.,
      341310., 349248., 357222., 365232., 343830., 351840., 359886., 367968.,
      346350., 354432., 362550., 370704., 353910., 362208., 370542., 378912.,
      356430., 364800., 373206., 381648., 358950., 367392., 375870., 384384.,
      361470., 369984., 378534., 387120., 363990., 372576., 381198., 389856.,
      371550., 380352., 389190., 398064., 374070., 382944., 391854., 400800.,
      376590., 385536., 394518., 403536., 379110., 388128., 397182., 406272.,
      381630., 390720., 399846., 409008.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4867428., 4881864., 4905624., 4920096., 4943964., 4958472., 4982448.,
      4996992., 4904436., 4919016., 4942920., 4957536., 4981548., 4996200.,
      5020320., 5035008., 6463280., 6482720., 6514400., 6533888., 6565712.,
      6585248., 6617216., 6636800., 4787796., 4802376., 4825992., 4840608.,
      4864332., 4878984., 4902816., 4917504., 4823652., 4838376., 4862136.,
      4876896., 4900764., 4915560., 4939536., 4954368., 5856045., 5874090.,
      5903070., 5921160., 5950275., 5968410., 5997660., 6015840., 5899425.,
      5917650., 5946810., 5965080., 5994375., 6012690., 6042120., 6060480.,
      7770940., 7795240., 7833880., 7858240., 7897060., 7921480., 7960480.,
      7984960., 5753625., 5771850., 5800650., 5818920., 5847855., 5866170.,
      5895240., 5913600., 5795565., 5813970., 5842950., 5861400., 5890515.,
      5909010., 5938260., 5956800., 6159705., 6179010., 6209250., 6228600.,
      6258975., 6278370., 6308880., 6328320., 6203085., 6222570., 6252990.,
      6272520., 6303075., 6322650., 6353340., 6372960., 8169100., 8195080.,
      8235400., 8261440., 8301940., 8328040., 8368720., 8394880., 6047205.,
      6066690., 6096750., 6116280., 6146475., 6166050., 6196380., 6216000.,
      6089145., 6108810., 6139050., 6158760., 6189135., 6208890., 6239400.,
      6259200., 4632276., 4647720., 4671336., 4686816., 4710540., 4726056.,
      4749888., 4765440., 4664676., 4680264., 4704024., 4719648., 4743516.,
      4759176., 4783152., 4798848., 6138224., 6159008., 6190496., 6211328.,
      6242960., 6263840., 6295616., 6316544., 4539972., 4555560., 4579032.,
      4594656., 4618236., 4633896., 4657584., 4673280., 4571220., 4586952.,
      4610568., 4626336., 4650060., 4665864., 4689696., 4705536., 4859076.,
      4875528., 4900152., 4916640., 4941372., 4957896., 4982736., 4999296.,
      4891476., 4908072., 4932840., 4949472., 4974348., 4991016., 5016000.,
      5032704., 6435248., 6457376., 6490208., 6512384., 6545360., 6567584.,
      6600704., 6622976., 4758708., 4775304., 4799784., 4816416., 4841004.,
      4857672., 4882368., 4899072., 4789956., 4806696., 4831320., 4848096.,
      4872828., 4889640., 4914480., 4931328.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      595842., 601980., 609396., 615552., 623022., 629196., 636720., 642912.,
      600810., 607020., 614508., 620736., 628278., 634524., 642120., 648384.,
      605778., 612060., 619620., 625920., 633534., 639852., 647520., 653856.,
      610746., 617100., 624732., 631104., 638790., 645180., 652920., 659328.,
      615714., 622140., 629844., 636288., 644046., 650508., 658320., 664800.,
      630618., 637260., 645180., 651840., 659814., 666492., 674520., 681216.,
      635586., 642300., 650292., 657024., 665070., 671820., 679920., 686688.,
      640554., 647340., 655404., 662208., 670326., 677148., 685320., 692160.,
      645522., 652380., 660516., 667392., 675582., 682476., 690720., 697632.,
      650490., 657420., 665628., 672576., 680838., 687804., 696120., 703104.,
      665394., 672540., 680964., 688128., 696606., 703788., 712320., 719520.,
      670362., 677580., 686076., 693312., 701862., 709116., 717720., 724992.,
      675330., 682620., 691188., 698496., 707118., 714444., 723120., 730464.,
      680298., 687660., 696300., 703680., 712374., 719772., 728520., 735936.,
      685266., 692700., 701412., 708864., 717630., 725100., 733920., 741408.,
      700170., 707820., 716748., 724416., 733398., 741084., 750120., 757824.,
      705138., 712860., 721860., 729600., 738654., 746412., 755520., 763296.,
      710106., 717900., 726972., 734784., 743910., 751740., 760920., 768768.,
      715074., 722940., 732084., 739968., 749166., 757068., 766320., 774240.,
      720042., 727980., 737196., 745152., 754422., 762396., 771720., 779712.,
      734946., 743100., 752532., 760704., 770190., 778380., 787920., 796128.,
      739914., 748140., 757644., 765888., 775446., 783708., 793320., 801600.,
      744882., 753180., 762756., 771072., 780702., 789036., 798720., 807072.,
      749850., 758220., 767868., 776256., 785958., 794364., 804120., 812544.,
      754818., 763260., 772980., 781440., 791214., 799692., 809520., 818016.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2160228., 2168520., 2176812., 2185104., 2202792., 2211120., 2219448.,
      2227776., 2245644., 2254008., 2262372., 2270736., 2288784., 2297184.,
      2305584., 2313984., 2197236., 2205672., 2214108., 2222544., 2240376.,
      2248848., 2257320., 2265792., 2283804., 2292312., 2300820., 2309328.,
      2327520., 2336064., 2344608., 2353152., 2843248., 2854496., 2865744.,
      2876992., 2900384., 2911680., 2922976., 2934272., 2957904., 2969248.,
      2980592., 2991936., 3015808., 3027200., 3038592., 3049984., 2062260.,
      2070696., 2079132., 2087568., 2104824., 2113296., 2121768., 2130240.,
      2147676., 2156184., 2164692., 2173200., 2190816., 2199360., 2207904.,
      2216448., 2096964., 2105544., 2114124., 2122704., 2140104., 2148720.,
      2157336., 2165952., 2183532., 2192184., 2200836., 2209488., 2227248.,
      2235936., 2244624., 2253312., 2647005., 2656346., 2665687., 2675028.,
      2695442., 2704828., 2714214., 2723600., 2744239., 2753670., 2763101.,
      2772532., 2793396., 2802872., 2812348., 2821824., 2690577., 2700098.,
      2709619., 2719140., 2739734., 2749300., 2758866., 2768432., 2789251.,
      2798862., 2808473., 2818084., 2839128., 2848784., 2858440., 2868096.,
      3473804., 3486328., 3498852., 3511376., 3538184., 3550768., 3563352.,
      3575936., 3603044., 3615688., 3628332., 3640976., 3668384., 3681088.,
      3693792., 3706496., 2538241., 2547762., 2557283., 2566804., 2586678.,
      2596244., 2605810., 2615376., 2635475., 2645086., 2654697., 2664308.,
      2684632., 2694288., 2703944., 2713600., 2545653., 2554842., 2564031.,
      2573220., 2592762., 2601996., 2611230., 2620464., 2640231., 2649510.,
      2658789., 2668068., 2688060., 2697384., 2706708., 2716032., 2910537.,
      2920626., 2930715., 2940804., 2961966., 2972100., 2982234., 2992368.,
      3013755., 3023934., 3034113., 3044292., 3065904., 3076128., 3086352.,
      3096576., 2954109., 2964378., 2974647., 2984916., 3006258., 3016572.,
      3026886., 3037200., 3058767., 3069126., 3079485., 3089844., 3111636.,
      3122040., 3132444., 3142848., 3833756., 3847448., 3861140., 3874832.,
      3902808., 3916560., 3930312., 3944064., 3972340., 3986152., 3999964.,
      4013776., 4042352., 4056224., 4070096., 4083968., 2789805., 2800074.,
      2810343., 2820612., 2841234., 2851548., 2861862., 2872176., 2893023.,
      2903382., 2913741., 2924100., 2945172., 2955576., 2965980., 2976384.,
      2830497., 2840946., 2851395., 2861844., 2882646., 2893140., 2903634.,
      2914128., 2935155., 2945694., 2956233., 2966772., 2988024., 2998608.,
      3009192., 3019776., 2484052., 2492328., 2500604., 2508880., 2525784.,
      2534096., 2542408., 2550720., 2567804., 2576152., 2584500., 2592848.,
      2610112., 2618496., 2626880., 2635264., 2517988., 2526408., 2534828.,
      2543248., 2560296., 2568752., 2577208., 2585664., 2602892., 2611384.,
      2619876., 2628368., 2645776., 2654304., 2662832., 2671360., 3265456.,
      3276512., 3287568., 3298624., 3320800., 3331904., 3343008., 3354112.,
      3376528., 3387680., 3398832., 3409984., 3432640., 3443840., 3455040.,
      3466240., 2383268., 2391688., 2400108., 2408528., 2425000., 2433456.,
      2441912., 2450368., 2467020., 2475512., 2484004., 2492496., 2509328.,
      2517856., 2526384., 2534912., 2414388., 2422440., 2430492., 2438544.,
      2454648., 2462736., 2470824., 2478912., 2495196., 2503320., 2511444.,
      2519568., 2536032., 2544192., 2552352., 2560512., 2712900., 2721672.,
      2730444., 2739216., 2756616., 2765424., 2774232., 2783040., 2800620.,
      2809464., 2818308., 2827152., 2844912., 2853792., 2862672., 2871552.,
      2746836., 2755752., 2764668., 2773584., 2791128., 2800080., 2809032.,
      2817984., 2835708., 2844696., 2853684., 2862672., 2880576., 2889600.,
      2898624., 2907648., 3570928., 3582816., 3594704., 3606592., 3629600.,
      3641536., 3653472., 3665408., 3688656., 3700640., 3712624., 3724608.,
      3748096., 3760128., 3772160., 3784192., 2604180., 2613096., 2622012.,
      2630928., 2647896., 2656848., 2665800., 2674752., 2691900., 2700888.,
      2709876., 2718864., 2736192., 2745216., 2754240., 2763264., 2635812.,
      2644872., 2653932., 2662992., 2680104., 2689200., 2698296., 2707392.,
      2724684., 2733816., 2742948., 2752080., 2769552., 2778720., 2787888.,
      2797056.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1185546., 1191684., 1197822., 1203960., 1212636., 1218792., 1224948.,
      1231104., 1239870., 1246044., 1252218., 1258392., 1267248., 1273440.,
      1279632., 1285824., 1195410., 1201620., 1207830., 1214040., 1222788.,
      1229016., 1235244., 1241472., 1250310., 1256556., 1262802., 1269048.,
      1277976., 1284240., 1290504., 1296768., 1205274., 1211556., 1217838.,
      1224120., 1232940., 1239240., 1245540., 1251840., 1260750., 1267068.,
      1273386., 1279704., 1288704., 1295040., 1301376., 1307712., 1215138.,
      1221492., 1227846., 1234200., 1243092., 1249464., 1255836., 1262208.,
      1271190., 1277580., 1283970., 1290360., 1299432., 1305840., 1312248.,
      1318656., 1225002., 1231428., 1237854., 1244280., 1253244., 1259688.,
      1266132., 1272576., 1281630., 1288092., 1294554., 1301016., 1310160.,
      1316640., 1323120., 1329600., 1254594., 1261236., 1267878., 1274520.,
      1283700., 1290360., 1297020., 1303680., 1312950., 1319628., 1326306.,
      1332984., 1342344., 1349040., 1355736., 1362432., 1264458., 1271172.,
      1277886., 1284600., 1293852., 1300584., 1307316., 1314048., 1323390.,
      1330140., 1336890., 1343640., 1353072., 1359840., 1366608., 1373376.,
      1274322., 1281108., 1287894., 1294680., 1304004., 1310808., 1317612.,
      1324416., 1333830., 1340652., 1347474., 1354296., 1363800., 1370640.,
      1377480., 1384320., 1284186., 1291044., 1297902., 1304760., 1314156.,
      1321032., 1327908., 1334784., 1344270., 1351164., 1358058., 1364952.,
      1374528., 1381440., 1388352., 1395264., 1294050., 1300980., 1307910.,
      1314840., 1324308., 1331256., 1338204., 1345152., 1354710., 1361676.,
      1368642., 1375608., 1385256., 1392240., 1399224., 1406208., 1323642.,
      1330788., 1337934., 1345080., 1354764., 1361928., 1369092., 1376256.,
      1386030., 1393212., 1400394., 1407576., 1417440., 1424640., 1431840.,
      1439040., 1333506., 1340724., 1347942., 1355160., 1364916., 1372152.,
      1379388., 1386624., 1396470., 1403724., 1410978., 1418232., 1428168.,
      1435440., 1442712., 1449984., 1343370., 1350660., 1357950., 1365240.,
      1375068., 1382376., 1389684., 1396992., 1406910., 1414236., 1421562.,
      1428888., 1438896., 1446240., 1453584., 1460928., 1353234., 1360596.,
      1367958., 1375320., 1385220., 1392600., 1399980., 1407360., 1417350.,
      1424748., 1432146., 1439544., 1449624., 1457040., 1464456., 1471872.,
      1363098., 1370532., 1377966., 1385400., 1395372., 1402824., 1410276.,
      1417728., 1427790., 1435260., 1442730., 1450200., 1460352., 1467840.,
      1475328., 1482816., 1392690., 1400340., 1407990., 1415640., 1425828.,
      1433496., 1441164., 1448832., 1459110., 1466796., 1474482., 1482168.,
      1492536., 1500240., 1507944., 1515648., 1402554., 1410276., 1417998.,
      1425720., 1435980., 1443720., 1451460., 1459200., 1469550., 1477308.,
      1485066., 1492824., 1503264., 1511040., 1518816., 1526592., 1412418.,
      1420212., 1428006., 1435800., 1446132., 1453944., 1461756., 1469568.,
      1479990., 1487820., 1495650., 1503480., 1513992., 1521840., 1529688.,
      1537536., 1422282., 1430148., 1438014., 1445880., 1456284., 1464168.,
      1472052., 1479936., 1490430., 1498332., 1506234., 1514136., 1524720.,
      1532640., 1540560., 1548480., 1432146., 1440084., 1448022., 1455960.,
      1466436., 1474392., 1482348., 1490304., 1500870., 1508844., 1516818.,
      1524792., 1535448., 1543440., 1551432., 1559424., 1461738., 1469892.,
      1478046., 1486200., 1496892., 1505064., 1513236., 1521408., 1532190.,
      1540380., 1548570., 1556760., 1567632., 1575840., 1584048., 1592256.,
      1471602., 1479828., 1488054., 1496280., 1507044., 1515288., 1523532.,
      1531776., 1542630., 1550892., 1559154., 1567416., 1578360., 1586640.,
      1594920., 1603200., 1481466., 1489764., 1498062., 1506360., 1517196.,
      1525512., 1533828., 1542144., 1553070., 1561404., 1569738., 1578072.,
      1589088., 1597440., 1605792., 1614144., 1491330., 1499700., 1508070.,
      1516440., 1527348., 1535736., 1544124., 1552512., 1563510., 1571916.,
      1580322., 1588728., 1599816., 1608240., 1616664., 1625088., 1501194.,
      1509636., 1518078., 1526520., 1537500., 1545960., 1554420., 1562880.,
      1573950., 1582428., 1590906., 1599384., 1610544., 1619040., 1627536.,
      1636032.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      179136., 236120., 237680., 176112., 177264., 215640., 284110.,
      285940., 211770., 213120., 226800., 298750., 300580., 222570.,
      223920., 170784., 224792., 226160., 167328., 168336., 179136.,
      235736., 237104., 175392., 176400.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22911., 23082., 23253., 23424., 23595., 24279., 24450., 24621., 24792.,
      24963., 25647., 25818., 25989., 26160., 26331., 27015., 27186., 27357.,
      27528., 27699., 28383., 28554., 28725., 28896., 29067.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      354096., 358272., 466672., 472240., 469744., 475360., 348012., 352224.,
      350280., 354528., 426060., 431280., 561260., 568220., 564860., 571880.,
      418275., 423540., 420930., 426240., 448020., 453600., 590060., 597500.,
      593660., 601160., 439515., 445140., 442170., 447840., 337104., 341568.,
      443632., 449584., 446320., 452320., 330156., 334656., 332136., 336672.,
      353520., 358272., 465136., 471472., 467824., 474208., 345996., 350784.,
      347976., 352800.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44058., 45822., 44382., 46164., 44706., 46506., 45030., 46848., 45354.,
      47190., 46650., 48558., 46974., 48900., 47298., 49242., 47622., 49584.,
      47946., 49926., 49242., 51294., 49566., 51636., 49890., 51978., 50214.,
      52320., 50538., 52662., 51834., 54030., 52158., 54372., 52482., 54714.,
      52806., 55056., 53130., 55398., 54426., 56766., 54750., 57108., 55074.,
      57450., 55398., 57792., 55722., 58134.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      704016.,  708192.,  712368.,  716544.,  927776.,  933344.,  938912.,
      944480.,  933872.,  939488.,  945104.,  950720.,  691812.,  696024.,
      700236.,  704448.,  696312.,  700560.,  704808.,  709056.,  846900.,
      852120.,  857340.,  862560.,  1115560., 1122520., 1129480., 1136440.,
      1122700., 1129720., 1136740., 1143760., 831285.,  836550.,  841815.,
      847080.,  836550.,  841860.,  847170.,  852480.,  890460.,  896040.,
      901620.,  907200.,  1172680., 1180120., 1187560., 1195000., 1179820.,
      1187320., 1194820., 1202320., 873405.,  879030.,  884655.,  890280.,
      878670.,  884340.,  890010.,  895680.,  669744.,  674208.,  678672.,
      683136.,  881312.,  887264.,  893216.,  899168.,  886640.,  892640.,
      898640.,  904640.,  655812.,  660312.,  664812.,  669312.,  659736.,
      664272.,  668808.,  673344.,  702288.,  707040.,  711792.,  716544.,
      923936.,  930272.,  936608.,  942944.,  929264.,  935648.,  942032.,
      948416.,  687204.,  691992.,  696780.,  701568.,  691128.,  695952.,
      700776.,  705600.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      86352.,  88116.,  89880.,  91644.,  86982.,  88764.,  90546.,  92328.,
      87612.,  89412.,  91212.,  93012.,  88242.,  90060.,  91878.,  93696.,
      88872.,  90708.,  92544.,  94380.,  91392.,  93300.,  95208.,  97116.,
      92022.,  93948.,  95874.,  97800.,  92652.,  94596.,  96540.,  98484.,
      93282.,  95244.,  97206.,  99168.,  93912.,  95892.,  97872.,  99852.,
      96432.,  98484.,  100536., 102588., 97062.,  99132.,  101202., 103272.,
      97692.,  99780.,  101868., 103956., 98322.,  100428., 102534., 104640.,
      98952.,  101076., 103200., 105324., 101472., 103668., 105864., 108060.,
      102102., 104316., 106530., 108744., 102732., 104964., 107196., 109428.,
      103362., 105612., 107862., 110112., 103992., 106260., 108528., 110796.,
      106512., 108852., 111192., 113532., 107142., 109500., 111858., 114216.,
      107772., 110148., 112524., 114900., 108402., 110796., 113190., 115584.,
      109032., 111444., 113856., 116268.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      705852.,  716544.,  930272.,  944480.,  936416.,  950720.,  693756.,
      704448.,  698292.,  709056.,  849375.,  862560.,  1118920., 1136440.,
      1126120., 1143760., 833895.,  847080.,  839205.,  852480.,  893295.,
      907200.,  1176520., 1195000., 1183720., 1202320., 876375.,  890280.,
      881685.,  895680.,  672156.,  683136.,  884576.,  899168.,  889952.,
      904640.,  658332.,  669312.,  662292.,  673344.,  704988.,  716544.,
      927584.,  942944.,  932960.,  948416.,  690012.,  701568.,  693972.,
      705600.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87792.,  91644.,  88440.,  92328.,  89088.,  93012.,  89736.,  93696.,
      90384.,  94380.,  92976.,  97116.,  93624.,  97800.,  94272.,  98484.,
      94920.,  99168.,  95568.,  99852.,  98160.,  102588., 98808.,  103272.,
      99456.,  103956., 100104., 104640., 100752., 105324., 103344., 108060.,
      103992., 108744., 104640., 109428., 105288., 110112., 105936., 110796.,
      108528., 113532., 109176., 114216., 109824., 114900., 110472., 115584.,
      111120., 116268.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1403388., 1411704., 1424736., 1433088., 1849456., 1860544., 1877824.,
      1888960., 1861648., 1872832., 1890208., 1901440., 1379124., 1387512.,
      1400472., 1408896., 1388124., 1396584., 1409616., 1418112., 1688355.,
      1698750., 1714680., 1725120., 2223980., 2237840., 2258960., 2272880.,
      2238260., 2252240., 2273480., 2287520., 1657305., 1667790., 1683630.,
      1694160., 1667835., 1678410., 1694340., 1704960., 1775475., 1786590.,
      1803240., 1814400., 2338220., 2353040., 2375120., 2390000., 2352500.,
      2367440., 2389640., 2404640., 1741545., 1752750., 1769310., 1780560.,
      1752075., 1763370., 1780020., 1791360., 1335420., 1344312., 1357344.,
      1366272., 1757296., 1769152., 1786432., 1798336., 1767952., 1779904.,
      1797280., 1809280., 1307700., 1316664., 1329624., 1338624., 1315548.,
      1324584., 1337616., 1346688., 1400508., 1409976., 1423584., 1433088.,
      1842544., 1855168., 1873216., 1885888., 1853200., 1865920., 1884064.,
      1896832., 1370484., 1380024., 1393560., 1403136., 1378332., 1387944.,
      1401552., 1411200.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      172074., 175584., 179760., 183288., 173334., 176880., 181092., 184656.,
      174594., 178176., 182424., 186024., 175854., 179472., 183756., 187392.,
      177114., 180768., 185088., 188760., 182154., 185952., 190416., 194232.,
      183414., 187248., 191748., 195600., 184674., 188544., 193080., 196968.,
      185934., 189840., 194412., 198336., 187194., 191136., 195744., 199704.,
      192234., 196320., 201072., 205176., 193494., 197616., 202404., 206544.,
      194754., 198912., 203736., 207912., 196014., 200208., 205068., 209280.,
      197274., 201504., 206400., 210648., 202314., 206688., 211728., 216120.,
      203574., 207984., 213060., 217488., 204834., 209280., 214392., 218856.,
      206094., 210576., 215724., 220224., 207354., 211872., 217056., 221592.,
      212394., 217056., 222384., 227064., 213654., 218352., 223716., 228432.,
      214914., 219648., 225048., 229800., 216174., 220944., 226380., 231168.,
      217434., 222240., 227712., 232536.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2798460., 2806776., 2815092., 2823408., 2841120., 2849472., 2857824.,
      2866176., 3687824., 3698912., 3710000., 3721088., 3744512., 3755648.,
      3766784., 3777920., 3712112., 3723296., 3734480., 3745664., 3769184.,
      3780416., 3791648., 3802880., 2749860., 2758248., 2766636., 2775024.,
      2792520., 2800944., 2809368., 2817792., 2767788., 2776248., 2784708.,
      2793168., 2810736., 2819232., 2827728., 2836224., 3366315., 3376710.,
      3387105., 3397500., 3418920., 3429360., 3439800., 3450240., 4434100.,
      4447960., 4461820., 4475680., 4504000., 4517920., 4531840., 4545760.,
      4462540., 4476520., 4490500., 4504480., 4532920., 4546960., 4561000.,
      4575040., 3304125., 3314610., 3325095., 3335580., 3356730., 3367260.,
      3377790., 3388320., 3325095., 3335670., 3346245., 3356820., 3378060.,
      3388680., 3399300., 3409920., 3539835., 3550950., 3562065., 3573180.,
      3595320., 3606480., 3617640., 3628800., 4661620., 4676440., 4691260.,
      4706080., 4735360., 4750240., 4765120., 4780000., 4690060., 4705000.,
      4719940., 4734880., 4764280., 4779280., 4794280., 4809280., 3471885.,
      3483090., 3494295., 3505500., 3527370., 3538620., 3549870., 3561120.,
      3492855., 3504150., 3515445., 3526740., 3548700., 3560040., 3571380.,
      3582720., 2661948., 2670840., 2679732., 2688624., 2705760., 2714688.,
      2723616., 2732544., 3502736., 3514592., 3526448., 3538304., 3560960.,
      3572864., 3584768., 3596672., 3523952., 3535904., 3547856., 3559808.,
      3582560., 3594560., 3606560., 3618560., 2606436., 2615400., 2624364.,
      2633328., 2650248., 2659248., 2668248., 2677248., 2622060., 2631096.,
      2640132., 2649168., 2666160., 2675232., 2684304., 2693376., 2791548.,
      2801016., 2810484., 2819952., 2837664., 2847168., 2856672., 2866176.,
      3672464., 3685088., 3697712., 3710336., 3733760., 3746432., 3759104.,
      3771776., 3693680., 3706400., 3719120., 3731840., 3755360., 3768128.,
      3780896., 3793664., 2731428., 2740968., 2750508., 2760048., 2777544.,
      2787120., 2796696., 2806272., 2747052., 2756664., 2766276., 2775888.,
      2793456., 2803104., 2812752., 2822400.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      340638., 344148., 347658., 351168., 355992., 359520., 363048., 366576.,
      343122., 346668., 350214., 353760., 358620., 362184., 365748., 369312.,
      345606., 349188., 352770., 356352., 361248., 364848., 368448., 372048.,
      348090., 351708., 355326., 358944., 363876., 367512., 371148., 374784.,
      350574., 354228., 357882., 361536., 366504., 370176., 373848., 377520.,
      360510., 364308., 368106., 371904., 377016., 380832., 384648., 388464.,
      362994., 366828., 370662., 374496., 379644., 383496., 387348., 391200.,
      365478., 369348., 373218., 377088., 382272., 386160., 390048., 393936.,
      367962., 371868., 375774., 379680., 384900., 388824., 392748., 396672.,
      370446., 374388., 378330., 382272., 387528., 391488., 395448., 399408.,
      380382., 384468., 388554., 392640., 398040., 402144., 406248., 410352.,
      382866., 386988., 391110., 395232., 400668., 404808., 408948., 413088.,
      385350., 389508., 393666., 397824., 403296., 407472., 411648., 415824.,
      387834., 392028., 396222., 400416., 405924., 410136., 414348., 418560.,
      390318., 394548., 398778., 403008., 408552., 412800., 417048., 421296.,
      400254., 404628., 409002., 413376., 419064., 423456., 427848., 432240.,
      402738., 407148., 411558., 415968., 421692., 426120., 430548., 434976.,
      405222., 409668., 414114., 418560., 424320., 428784., 433248., 437712.,
      407706., 412188., 416670., 421152., 426948., 431448., 435948., 440448.,
      410190., 414708., 419226., 423744., 429576., 434112., 438648., 443184.,
      420126., 424788., 429450., 434112., 440088., 444768., 449448., 454128.,
      422610., 427308., 432006., 436704., 442716., 447432., 452148., 456864.,
      425094., 429828., 434562., 439296., 445344., 450096., 454848., 459600.,
      427578., 432348., 437118., 441888., 447972., 452760., 457548., 462336.,
      430062., 434868., 439674., 444480., 450600., 455424., 460248., 465072.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2802132., 2823408., 2844756., 2866176., 3692816., 3721088., 3749456.,
      3777920., 3717200., 3745664., 3774224., 3802880., 2753748., 2775024.,
      2796372., 2817792., 2771748., 2793168., 2814660., 2836224., 3371265.,
      3397500., 3423825., 3450240., 4440820., 4475680., 4510660., 4545760.,
      4469380., 4504480., 4539700., 4575040., 3309345., 3335580., 3361905.,
      3388320., 3330405., 3356820., 3383325., 3409920., 3545505., 3573180.,
      3600945., 3628800., 4669300., 4706080., 4742980., 4780000., 4697860.,
      4734880., 4772020., 4809280., 3477825., 3505500., 3533265., 3561120.,
      3498885., 3526740., 3554685., 3582720., 2666772., 2688624., 2710548.,
      2732544., 3509264., 3538304., 3567440., 3596672., 3530576., 3559808.,
      3589136., 3618560., 2611476., 2633328., 2655252., 2677248., 2627172.,
      2649168., 2671236., 2693376., 2796948., 2819952., 2843028., 2866176.,
      3679760., 3710336., 3741008., 3771776., 3701072., 3731840., 3762704.,
      3793664., 2737044., 2760048., 2783124., 2806272., 2752740., 2775888.,
      2799108., 2822400.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      343518., 351168., 358854., 366576., 346038., 353760., 361518., 369312.,
      348558., 356352., 364182., 372048., 351078., 358944., 366846., 374784.,
      353598., 361536., 369510., 377520., 363678., 371904., 380166., 388464.,
      366198., 374496., 382830., 391200., 368718., 377088., 385494., 393936.,
      371238., 379680., 388158., 396672., 373758., 382272., 390822., 399408.,
      383838., 392640., 401478., 410352., 386358., 395232., 404142., 413088.,
      388878., 397824., 406806., 415824., 391398., 400416., 409470., 418560.,
      393918., 403008., 412134., 421296., 403998., 413376., 422790., 432240.,
      406518., 415968., 425454., 434976., 409038., 418560., 428118., 437712.,
      411558., 421152., 430782., 440448., 414078., 423744., 433446., 443184.,
      424158., 434112., 444102., 454128., 426678., 436704., 446766., 456864.,
      429198., 439296., 449430., 459600., 431718., 441888., 452094., 462336.,
      434238., 444480., 454758., 465072.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5587668., 5604264., 5630184., 5646816., 5672844., 5689512., 5715648.,
      5732352., 7363504., 7385632., 7420000., 7442176., 7476688., 7498912.,
      7533568., 7555840., 7412080., 7434400., 7468960., 7491328., 7526032.,
      7548448., 7583296., 7605760., 5490756., 5507496., 5533272., 5550048.,
      5575932., 5592744., 5618736., 5635584., 5526612., 5543496., 5569416.,
      5586336., 5612364., 5629320., 5655456., 5672448., 6721785., 6742530.,
      6774210., 6795000., 6826815., 6847650., 6879600., 6900480., 8853980.,
      8881640., 8923640., 8951360., 8993540., 9021320., 9063680., 9091520.,
      8910860., 8938760., 8981000., 9008960., 9051380., 9079400., 9122000.,
      9150080., 6597765., 6618690., 6650190., 6671160., 6702795., 6723810.,
      6755580., 6776640., 6639705., 6660810., 6692490., 6713640., 6745455.,
      6766650., 6798600., 6819840., 7068825., 7091010., 7124130., 7146360.,
      7179615., 7201890., 7235280., 7257600., 9309020., 9338600., 9382520.,
      9412160., 9456260., 9485960., 9530240., 9560000., 9365900., 9395720.,
      9439880., 9469760., 9514100., 9544040., 9588560., 9618560., 6933285.,
      6955650., 6988590., 7011000., 7044075., 7066530., 7099740., 7122240.,
      6975225., 6997770., 7030890., 7053480., 7086735., 7109370., 7142760.,
      7165440., 5315796., 5333544., 5359464., 5377248., 5403276., 5421096.,
      5447232., 5465088., 6994864., 7018528., 7052896., 7076608., 7111120.,
      7134880., 7169536., 7193344., 7037296., 7061152., 7095712., 7119616.,
      7154320., 7178272., 7213120., 7237120., 5205060., 5222952., 5248728.,
      5266656., 5292540., 5310504., 5336496., 5354496., 5236308., 5254344.,
      5280264., 5298336., 5324364., 5342472., 5368608., 5386752., 5574996.,
      5593896., 5620968., 5639904., 5667084., 5686056., 5713344., 5732352.,
      7334320., 7359520., 7395424., 7420672., 7456720., 7482016., 7518208.,
      7543552., 7376752., 7402144., 7438240., 7463680., 7499920., 7525408.,
      7561792., 7587328., 5455044., 5474088., 5501016., 5520096., 5547132.,
      5566248., 5593392., 5612544., 5486292., 5505480., 5532552., 5551776.,
      5578956., 5598216., 5625504., 5644800.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      680034., 687036., 695316., 702336., 710670., 717708., 726096., 733152.,
      685002., 692076., 700428., 707520., 715926., 723036., 731496., 738624.,
      689970., 697116., 705540., 712704., 721182., 728364., 736896., 744096.,
      694938., 702156., 710652., 717888., 726438., 733692., 742296., 749568.,
      699906., 707196., 715764., 723072., 731694., 739020., 747696., 755040.,
      719778., 727356., 736212., 743808., 752718., 760332., 769296., 776928.,
      724746., 732396., 741324., 748992., 757974., 765660., 774696., 782400.,
      729714., 737436., 746436., 754176., 763230., 770988., 780096., 787872.,
      734682., 742476., 751548., 759360., 768486., 776316., 785496., 793344.,
      739650., 747516., 756660., 764544., 773742., 781644., 790896., 798816.,
      759522., 767676., 777108., 785280., 794766., 802956., 812496., 820704.,
      764490., 772716., 782220., 790464., 800022., 808284., 817896., 826176.,
      769458., 777756., 787332., 795648., 805278., 813612., 823296., 831648.,
      774426., 782796., 792444., 800832., 810534., 818940., 828696., 837120.,
      779394., 787836., 797556., 806016., 815790., 824268., 834096., 842592.,
      799266., 807996., 818004., 826752., 836814., 845580., 855696., 864480.,
      804234., 813036., 823116., 831936., 842070., 850908., 861096., 869952.,
      809202., 818076., 828228., 837120., 847326., 856236., 866496., 875424.,
      814170., 823116., 833340., 842304., 852582., 861564., 871896., 880896.,
      819138., 828156., 838452., 847488., 857838., 866892., 877296., 886368.,
      839010., 848316., 858900., 868224., 878862., 888204., 898896., 908256.,
      843978., 853356., 864012., 873408., 884118., 893532., 904296., 913728.,
      848946., 858396., 869124., 878592., 889374., 898860., 909696., 919200.,
      853914., 863436., 874236., 883776., 894630., 904188., 915096., 924672.,
      858882., 868476., 879348., 888960., 899886., 909516., 920496., 930144.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2626260., 2635176., 2644092., 2653008., 2671320., 2680272., 2689224.,
      2698176., 2716668., 2725656., 2734644., 2743632., 2762304., 2771328.,
      2780352., 2789376., 3410160., 3422048., 3433936., 3445824., 3469856.,
      3481792., 3493728., 3505664., 3529936., 3541920., 3553904., 3565888.,
      3590400., 3602432., 3614464., 3626496., 3457968., 3470048., 3482128.,
      3494208., 3518432., 3530560., 3542688., 3554816., 3579280., 3591456.,
      3603632., 3615808., 3640512., 3652736., 3664960., 3677184., 2518308.,
      2527368., 2536428., 2545488., 2563368., 2572464., 2581560., 2590656.,
      2608716., 2617848., 2626980., 2636112., 2654352., 2663520., 2672688.,
      2681856., 2553012., 2562216., 2571420., 2580624., 2598648., 2607888.,
      2617128., 2626368., 2644572., 2653848., 2663124., 2672400., 2690784.,
      2700096., 2709408., 2718720., 3294441., 3304434., 3314427., 3324420.,
      3345486., 3355524., 3365562., 3375600., 3396891., 3406974., 3417057.,
      3427140., 3448656., 3458784., 3468912., 3479040., 4290476., 4303800.,
      4317124., 4330448., 4358056., 4371440., 4384824., 4398208., 4426116.,
      4439560., 4453004., 4466448., 4494656., 4508160., 4521664., 4535168.,
      4346652., 4360216., 4373780., 4387344., 4415192., 4428816., 4442440.,
      4456064., 4484212., 4497896., 4511580., 4525264., 4553712., 4567456.,
      4581200., 4594944., 3175245., 3185418., 3195591., 3205764., 3226290.,
      3236508., 3246726., 3256944., 3277695., 3287958., 3298221., 3308484.,
      3329460., 3339768., 3350076., 3360384., 3215937., 3226290., 3236643.,
      3246996., 3267702., 3278100., 3288498., 3298896., 3319827., 3330270.,
      3340713., 3351156., 3372312., 3382800., 3393288., 3403776., 3643017.,
      3654450., 3665883., 3677316., 3699822., 3711300., 3722778., 3734256.,
      3756987., 3768510., 3780033., 3791556., 3814512., 3826080., 3837648.,
      3849216., 4739884., 4755128., 4770372., 4785616., 4815144., 4830448.,
      4845752., 4861056., 4890884., 4906248., 4921612., 4936976., 4967104.,
      4982528., 4997952., 5013376., 4796060., 4811544., 4827028., 4842512.,
      4872280., 4887824., 4903368., 4918912., 4948980., 4964584., 4980188.,
      4995792., 5026160., 5041824., 5057488., 5073152., 3500781., 3512394.,
      3524007., 3535620., 3557586., 3569244., 3580902., 3592560., 3614751.,
      3626454., 3638157., 3649860., 3672276., 3684024., 3695772., 3707520.,
      3541473., 3553266., 3565059., 3576852., 3598998., 3610836., 3622674.,
      3634512., 3656883., 3668766., 3680649., 3692532., 3715128., 3727056.,
      3738984., 3750912., 2345556., 2354088., 2362620., 2371152., 2388312.,
      2396880., 2405448., 2414016., 2431356., 2439960., 2448564., 2457168.,
      2474688., 2483328., 2491968., 2500608., 3039984., 3051360., 3062736.,
      3074112., 3096608., 3108032., 3119456., 3130880., 3153616., 3165088.,
      3176560., 3188032., 3211008., 3222528., 3234048., 3245568., 3083696.,
      3095264., 3106832., 3118400., 3141088., 3152704., 3164320., 3175936.,
      3198864., 3210528., 3222192., 3233856., 3257024., 3268736., 3280448.,
      3292160., 2240676., 2249352., 2258028., 2266704., 2283432., 2292144.,
      2300856., 2309568., 2326476., 2335224., 2343972., 2352720., 2369808.,
      2378592., 2387376., 2396160., 2272308., 2281128., 2289948., 2298768.,
      2315640., 2324496., 2333352., 2342208., 2359260., 2368152., 2377044.,
      2385936., 2403168., 2412096., 2421024., 2429952., 2617044., 2626728.,
      2636412., 2646096., 2664408., 2674128., 2683848., 2693568., 2712060.,
      2721816., 2731572., 2741328., 2760000., 2769792., 2779584., 2789376.,
      3389680., 3402592., 3415504., 3428416., 3452448., 3465408., 3478368.,
      3491328., 3515600., 3528608., 3541616., 3554624., 3579136., 3592192.,
      3605248., 3618304., 3433392., 3446496., 3459600., 3472704., 3496928.,
      3510080., 3523232., 3536384., 3560848., 3574048., 3587248., 3600448.,
      3625152., 3638400., 3651648., 3664896., 2493732., 2503560., 2513388.,
      2523216., 2541096., 2550960., 2560824., 2570688., 2588748., 2598648.,
      2608548., 2618448., 2636688., 2646624., 2656560., 2666496., 2525364.,
      2535336., 2545308., 2555280., 2573304., 2583312., 2593320., 2603328.,
      2621532., 2631576., 2641620., 2651664., 2670048., 2680128., 2690208.,
      2700288.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1353066., 1360068., 1367070., 1374072., 1383612., 1390632., 1397652.,
      1404672., 1414302., 1421340., 1428378., 1435416., 1445136., 1452192.,
      1459248., 1466304., 1362930., 1370004., 1377078., 1384152., 1393764.,
      1400856., 1407948., 1415040., 1424742., 1431852., 1438962., 1446072.,
      1455864., 1462992., 1470120., 1477248., 1372794., 1379940., 1387086.,
      1394232., 1403916., 1411080., 1418244., 1425408., 1435182., 1442364.,
      1449546., 1456728., 1466592., 1473792., 1480992., 1488192., 1382658.,
      1389876., 1397094., 1404312., 1414068., 1421304., 1428540., 1435776.,
      1445622., 1452876., 1460130., 1467384., 1477320., 1484592., 1491864.,
      1499136., 1392522., 1399812., 1407102., 1414392., 1424220., 1431528.,
      1438836., 1446144., 1456062., 1463388., 1470714., 1478040., 1488048.,
      1495392., 1502736., 1510080., 1431978., 1439556., 1447134., 1454712.,
      1464828., 1472424., 1480020., 1487616., 1497822., 1505436., 1513050.,
      1520664., 1530960., 1538592., 1546224., 1553856., 1441842., 1449492.,
      1457142., 1464792., 1474980., 1482648., 1490316., 1497984., 1508262.,
      1515948., 1523634., 1531320., 1541688., 1549392., 1557096., 1564800.,
      1451706., 1459428., 1467150., 1474872., 1485132., 1492872., 1500612.,
      1508352., 1518702., 1526460., 1534218., 1541976., 1552416., 1560192.,
      1567968., 1575744., 1461570., 1469364., 1477158., 1484952., 1495284.,
      1503096., 1510908., 1518720., 1529142., 1536972., 1544802., 1552632.,
      1563144., 1570992., 1578840., 1586688., 1471434., 1479300., 1487166.,
      1495032., 1505436., 1513320., 1521204., 1529088., 1539582., 1547484.,
      1555386., 1563288., 1573872., 1581792., 1589712., 1597632., 1510890.,
      1519044., 1527198., 1535352., 1546044., 1554216., 1562388., 1570560.,
      1581342., 1589532., 1597722., 1605912., 1616784., 1624992., 1633200.,
      1641408., 1520754., 1528980., 1537206., 1545432., 1556196., 1564440.,
      1572684., 1580928., 1591782., 1600044., 1608306., 1616568., 1627512.,
      1635792., 1644072., 1652352., 1530618., 1538916., 1547214., 1555512.,
      1566348., 1574664., 1582980., 1591296., 1602222., 1610556., 1618890.,
      1627224., 1638240., 1646592., 1654944., 1663296., 1540482., 1548852.,
      1557222., 1565592., 1576500., 1584888., 1593276., 1601664., 1612662.,
      1621068., 1629474., 1637880., 1648968., 1657392., 1665816., 1674240.,
      1550346., 1558788., 1567230., 1575672., 1586652., 1595112., 1603572.,
      1612032., 1623102., 1631580., 1640058., 1648536., 1659696., 1668192.,
      1676688., 1685184., 1589802., 1598532., 1607262., 1615992., 1627260.,
      1636008., 1644756., 1653504., 1664862., 1673628., 1682394., 1691160.,
      1702608., 1711392., 1720176., 1728960., 1599666., 1608468., 1617270.,
      1626072., 1637412., 1646232., 1655052., 1663872., 1675302., 1684140.,
      1692978., 1701816., 1713336., 1722192., 1731048., 1739904., 1609530.,
      1618404., 1627278., 1636152., 1647564., 1656456., 1665348., 1674240.,
      1685742., 1694652., 1703562., 1712472., 1724064., 1732992., 1741920.,
      1750848., 1619394., 1628340., 1637286., 1646232., 1657716., 1666680.,
      1675644., 1684608., 1696182., 1705164., 1714146., 1723128., 1734792.,
      1743792., 1752792., 1761792., 1629258., 1638276., 1647294., 1656312.,
      1667868., 1676904., 1685940., 1694976., 1706622., 1715676., 1724730.,
      1733784., 1745520., 1754592., 1763664., 1772736., 1668714., 1678020.,
      1687326., 1696632., 1708476., 1717800., 1727124., 1736448., 1748382.,
      1757724., 1767066., 1776408., 1788432., 1797792., 1807152., 1816512.,
      1678578., 1687956., 1697334., 1706712., 1718628., 1728024., 1737420.,
      1746816., 1758822., 1768236., 1777650., 1787064., 1799160., 1808592.,
      1818024., 1827456., 1688442., 1697892., 1707342., 1716792., 1728780.,
      1738248., 1747716., 1757184., 1769262., 1778748., 1788234., 1797720.,
      1809888., 1819392., 1828896., 1838400., 1698306., 1707828., 1717350.,
      1726872., 1738932., 1748472., 1758012., 1767552., 1779702., 1789260.,
      1798818., 1808376., 1820616., 1830192., 1839768., 1849344., 1708170.,
      1717764., 1727358., 1736952., 1749084., 1758696., 1768308., 1777920.,
      1790142., 1799772., 1809402., 1819032., 1831344., 1840992., 1850640.,
      1860288.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      371480., 460090., 462520., 366440., 368360., 447100., 553550.,
      556400., 440650., 442900., 470200., 582050., 584900., 463150.,
      465400., 353960., 437890., 440020., 348200., 349880., 371240.,
      459190., 461320., 365000., 366680.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      63810., 64188., 64566., 64944., 65322., 67590., 67968., 68346., 68724.,
      69102., 71370., 71748., 72126., 72504., 72882., 75150., 75528., 75906.,
      76284., 76662., 78930., 79308., 79686., 80064., 80442.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      736000.,  742960.,  911480.,  920180.,  916280.,  925040.,  725872.,
      732880.,  729664.,  736720.,  885500.,  894200.,  1096225., 1107100.,
      1101850., 1112800., 872540.,  881300.,  876980.,  885800.,  931100.,
      940400.,  1152475., 1164100., 1158100., 1169800., 916940.,  926300.,
      921380.,  930800.,  700480.,  707920.,  866480.,  875780.,  870680.,
      880040.,  688912.,  696400.,  692224.,  699760.,  734560.,  742480.,
      908480.,  918380.,  912680.,  922640.,  722032.,  730000.,  725344.,
      733360.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      124299., 127620., 125028., 128376., 125757., 129132., 126486., 129888.,
      127215., 130644., 131589., 135180., 132318., 135936., 133047., 136692.,
      133776., 137448., 134505., 138204., 138879., 142740., 139608., 143496.,
      140337., 144252., 141066., 145008., 141795., 145764., 146169., 150300.,
      146898., 151056., 147627., 151812., 148356., 152568., 149085., 153324.,
      153459., 157860., 154188., 158616., 154917., 159372., 155646., 160128.,
      156375., 160884.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1465040., 1472000., 1478960., 1485920., 1814260., 1822960., 1831660.,
      1840360., 1823800., 1832560., 1841320., 1850080., 1444736., 1451744.,
      1458752., 1465760., 1452272., 1459328., 1466384., 1473440., 1762300.,
      1771000., 1779700., 1788400., 2181575., 2192450., 2203325., 2214200.,
      2192750., 2203700., 2214650., 2225600., 1736320., 1745080., 1753840.,
      1762600., 1745140., 1753960., 1762780., 1771600., 1852900., 1862200.,
      1871500., 1880800., 2293325., 2304950., 2316575., 2328200., 2304500.,
      2316200., 2327900., 2339600., 1824520., 1833880., 1843240., 1852600.,
      1833340., 1842760., 1852180., 1861600., 1393520., 1400960., 1408400.,
      1415840., 1723660., 1732960., 1742260., 1751560., 1732000., 1741360.,
      1750720., 1760080., 1370336., 1377824., 1385312., 1392800., 1376912.,
      1384448., 1391984., 1399520., 1461200., 1469120., 1477040., 1484960.,
      1807060., 1816960., 1826860., 1836760., 1815400., 1825360., 1835320.,
      1845280., 1436096., 1444064., 1452032., 1460000., 1442672., 1450688.,
      1458704., 1466720.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      245277., 248598., 251919., 255240., 246708., 250056., 253404., 256752.,
      248139., 251514., 254889., 258264., 249570., 252972., 256374., 259776.,
      251001., 254430., 257859., 261288., 259587., 263178., 266769., 270360.,
      261018., 264636., 268254., 271872., 262449., 266094., 269739., 273384.,
      263880., 267552., 271224., 274896., 265311., 269010., 272709., 276408.,
      273897., 277758., 281619., 285480., 275328., 279216., 283104., 286992.,
      276759., 280674., 284589., 288504., 278190., 282132., 286074., 290016.,
      279621., 283590., 287559., 291528., 288207., 292338., 296469., 300600.,
      289638., 293796., 297954., 302112., 291069., 295254., 299439., 303624.,
      292500., 296712., 300924., 305136., 293931., 298170., 302409., 306648.,
      302517., 306918., 311319., 315720., 303948., 308376., 312804., 317232.,
      305379., 309834., 314289., 318744., 306810., 311292., 315774., 320256.,
      308241., 312750., 317259., 321768.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1468112., 1485920., 1818160., 1840360., 1827760., 1850080., 1447952.,
      1465760., 1455536., 1473440., 1766440., 1788400., 2186825., 2214200.,
      2198075., 2225600., 1740640., 1762600., 1749520., 1771600., 1857640.,
      1880800., 2299325., 2328200., 2310575., 2339600., 1829440., 1852600.,
      1838320., 1861600., 1397552., 1415840., 1728760., 1751560., 1737160.,
      1760080., 1374512., 1392800., 1381136., 1399520., 1465712., 1484960.,
      1812760., 1836760., 1821160., 1845280., 1440752., 1460000., 1447376.,
      1466720.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      247869., 255240., 249327., 256752., 250785., 258264., 252243., 259776.,
      253701., 261288., 262449., 270360., 263907., 271872., 265365., 273384.,
      266823., 274896., 268281., 276408., 277029., 285480., 278487., 286992.,
      279945., 288504., 281403., 290016., 282861., 291528., 291609., 300600.,
      293067., 302112., 294525., 303624., 295983., 305136., 297441., 306648.,
      306189., 315720., 307647., 317232., 309105., 318744., 310563., 320256.,
      312021., 321768.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2922352., 2936224., 2957920., 2971840., 3618980., 3636320., 3663320.,
      3680720., 3638060., 3655520., 3682640., 3700160., 2881936., 2895904.,
      2917504., 2931520., 2897008., 2911072., 2932768., 2946880., 3515540.,
      3532880., 3559400., 3576800., 4351975., 4373650., 4406650., 4428400.,
      4374325., 4396150., 4429300., 4451200., 3463820., 3481280., 3507680.,
      3525200., 3481460., 3499040., 3525560., 3543200., 3696740., 3715280.,
      3743000., 3761600., 4575475., 4598650., 4633150., 4656400., 4597825.,
      4621150., 4655800., 4679200., 3640220., 3658880., 3686480., 3705200.,
      3657860., 3676640., 3704360., 3723200., 2780272., 2795104., 2816800.,
      2831680., 3438980., 3457520., 3484520., 3503120., 3455660., 3474320.,
      3501440., 3520160., 2734096., 2749024., 2770624., 2785600., 2747248.,
      2762272., 2783968., 2799040., 2915632., 2931424., 2954080., 2969920.,
      3605780., 3625520., 3653720., 3673520., 3622460., 3642320., 3670640.,
      3690560., 2865616., 2881504., 2904064., 2920000., 2878768., 2894752.,
      2917408., 2933440.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      489123., 495738., 503838., 510480., 491985., 498654., 506808., 513504.,
      494847., 501570., 509778., 516528., 497709., 504486., 512748., 519552.,
      500571., 507402., 515718., 522576., 517743., 524898., 533538., 540720.,
      520605., 527814., 536508., 543744., 523467., 530730., 539478., 546768.,
      526329., 533646., 542448., 549792., 529191., 536562., 545418., 552816.,
      546363., 554058., 563238., 570960., 549225., 556974., 566208., 573984.,
      552087., 559890., 569178., 577008., 554949., 562806., 572148., 580032.,
      557811., 565722., 575118., 583056., 574983., 583218., 592938., 601200.,
      577845., 586134., 595908., 604224., 580707., 589050., 598878., 607248.,
      583569., 591966., 601848., 610272., 586431., 594882., 604818., 613296.,
      603603., 612378., 622638., 631440., 606465., 615294., 625608., 634464.,
      609327., 618210., 628578., 637488., 612189., 621126., 631548., 640512.,
      615051., 624042., 634518., 643536.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5830832., 5844704., 5858576., 5872448., 5901920., 5915840., 5929760.,
      5943680., 7220620., 7237960., 7255300., 7272640., 7309240., 7326640.,
      7344040., 7361440., 7258660., 7276120., 7293580., 7311040., 7347760.,
      7365280., 7382800., 7400320., 5749904., 5763872., 5777840., 5791808.,
      5820992., 5835008., 5849024., 5863040., 5779952., 5794016., 5808080.,
      5822144., 5851424., 5865536., 5879648., 5893760., 7013740., 7031080.,
      7048420., 7065760., 7101400., 7118800., 7136200., 7153600., 8682275.,
      8703950., 8725625., 8747300., 8791550., 8813300., 8835050., 8856800.,
      8726825., 8748650., 8770475., 8792300., 8836700., 8858600., 8880500.,
      8902400., 6910180., 6927640., 6945100., 6962560., 6997840., 7015360.,
      7032880., 7050400., 6945340., 6962920., 6980500., 6998080., 7033480.,
      7051120., 7068760., 7086400., 7374940., 7393480., 7412020., 7430560.,
      7467400., 7486000., 7504600., 7523200., 9127775., 9150950., 9174125.,
      9197300., 9243050., 9266300., 9289550., 9312800., 9172325., 9195650.,
      9218975., 9242300., 9288200., 9311600., 9335000., 9358400., 7261780.,
      7280440., 7299100., 7317760., 7354240., 7372960., 7391680., 7410400.,
      7296940., 7315720., 7334500., 7353280., 7389880., 7408720., 7427560.,
      7446400., 5545712., 5560544., 5575376., 5590208., 5618720., 5633600.,
      5648480., 5663360., 6859420., 6877960., 6896500., 6915040., 6950440.,
      6969040., 6987640., 7006240., 6892660., 6911320., 6929980., 6948640.,
      6984160., 7002880., 7021600., 7040320., 5453264., 5468192., 5483120.,
      5498048., 5526272., 5541248., 5556224., 5571200., 5479472., 5494496.,
      5509520., 5524544., 5552864., 5567936., 5583008., 5598080., 5815472.,
      5831264., 5847056., 5862848., 5892320., 5908160., 5924000., 5939840.,
      7191820., 7211560., 7231300., 7251040., 7287640., 7307440., 7327240.,
      7347040., 7225060., 7244920., 7264780., 7284640., 7321360., 7341280.,
      7361200., 7381120., 5715344., 5731232., 5747120., 5763008., 5792192.,
      5808128., 5824064., 5840000., 5741552., 5757536., 5773520., 5789504.,
      5818784., 5834816., 5850848., 5866880.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      971631.,  978246.,  984861.,  991476.,  1001034., 1007676., 1014318.,
      1020960., 977301.,  983970.,  990639.,  997308.,  1006920., 1013616.,
      1020312., 1027008., 982971.,  989694.,  996417.,  1003140., 1012806.,
      1019556., 1026306., 1033056., 988641.,  995418.,  1002195., 1008972.,
      1018692., 1025496., 1032300., 1039104., 994311.,  1001142., 1007973.,
      1014804., 1024578., 1031436., 1038294., 1045152., 1028331., 1035486.,
      1042641., 1049796., 1059894., 1067076., 1074258., 1081440., 1034001.,
      1041210., 1048419., 1055628., 1065780., 1073016., 1080252., 1087488.,
      1039671., 1046934., 1054197., 1061460., 1071666., 1078956., 1086246.,
      1093536., 1045341., 1052658., 1059975., 1067292., 1077552., 1084896.,
      1092240., 1099584., 1051011., 1058382., 1065753., 1073124., 1083438.,
      1090836., 1098234., 1105632., 1085031., 1092726., 1100421., 1108116.,
      1118754., 1126476., 1134198., 1141920., 1090701., 1098450., 1106199.,
      1113948., 1124640., 1132416., 1140192., 1147968., 1096371., 1104174.,
      1111977., 1119780., 1130526., 1138356., 1146186., 1154016., 1102041.,
      1109898., 1117755., 1125612., 1136412., 1144296., 1152180., 1160064.,
      1107711., 1115622., 1123533., 1131444., 1142298., 1150236., 1158174.,
      1166112., 1141731., 1149966., 1158201., 1166436., 1177614., 1185876.,
      1194138., 1202400., 1147401., 1155690., 1163979., 1172268., 1183500.,
      1191816., 1200132., 1208448., 1153071., 1161414., 1169757., 1178100.,
      1189386., 1197756., 1206126., 1214496., 1158741., 1167138., 1175535.,
      1183932., 1195272., 1203696., 1212120., 1220544., 1164411., 1172862.,
      1181313., 1189764., 1201158., 1209636., 1218114., 1226592., 1198431.,
      1207206., 1215981., 1224756., 1236474., 1245276., 1254078., 1262880.,
      1204101., 1212930., 1221759., 1230588., 1242360., 1251216., 1260072.,
      1268928., 1209771., 1218654., 1227537., 1236420., 1248246., 1257156.,
      1266066., 1274976., 1215441., 1224378., 1233315., 1242252., 1254132.,
      1263096., 1272060., 1281024., 1221111., 1230102., 1239093., 1248084.,
      1260018., 1269036., 1278054., 1287072.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5836976., 5872448., 5908016., 5943680., 7228420., 7272640., 7316980.,
      7361440., 7266580., 7311040., 7355620., 7400320., 5756336., 5791808.,
      5827376., 5863040., 5786480., 5822144., 5857904., 5893760., 7022020.,
      7065760., 7109620., 7153600., 8692775., 8747300., 8801975., 8856800.,
      8737475., 8792300., 8847275., 8902400., 6918820., 6962560., 7006420.,
      7050400., 6954100., 6998080., 7042180., 7086400., 7384420., 7430560.,
      7476820., 7523200., 9139775., 9197300., 9254975., 9312800., 9184475.,
      9242300., 9300275., 9358400., 7271620., 7317760., 7364020., 7410400.,
      7306900., 7353280., 7399780., 7446400., 5553776., 5590208., 5626736.,
      5663360., 6869620., 6915040., 6960580., 7006240., 6902980., 6948640.,
      6994420., 7040320., 5461616., 5498048., 5534576., 5571200., 5487920.,
      5524544., 5561264., 5598080., 5824496., 5862848., 5901296., 5939840.,
      7203220., 7251040., 7298980., 7347040., 7236580., 7284640., 7332820.,
      7381120., 5724656., 5763008., 5801456., 5840000., 5750960., 5789504.,
      5828144., 5866880.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      976815.,  991476.,  1006191., 1020960., 982539.,  997308.,  1012131.,
      1027008., 988263.,  1003140., 1018071., 1033056., 993987.,  1008972.,
      1024011., 1039104., 999711.,  1014804., 1029951., 1045152., 1034055.,
      1049796., 1065591., 1081440., 1039779., 1055628., 1071531., 1087488.,
      1045503., 1061460., 1077471., 1093536., 1051227., 1067292., 1083411.,
      1099584., 1056951., 1073124., 1089351., 1105632., 1091295., 1108116.,
      1124991., 1141920., 1097019., 1113948., 1130931., 1147968., 1102743.,
      1119780., 1136871., 1154016., 1108467., 1125612., 1142811., 1160064.,
      1114191., 1131444., 1148751., 1166112., 1148535., 1166436., 1184391.,
      1202400., 1154259., 1172268., 1190331., 1208448., 1159983., 1178100.,
      1196271., 1214496., 1165707., 1183932., 1202211., 1220544., 1171431.,
      1189764., 1208151., 1226592., 1205775., 1224756., 1243791., 1262880.,
      1211499., 1230588., 1249731., 1268928., 1217223., 1236420., 1255671.,
      1274976., 1222947., 1242252., 1261611., 1281024., 1228671., 1248084.,
      1267551., 1287072.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8700208.,  8722784.,  8760864.,  8783488.,  8821712.,  8844384.,
      8882752.,  8905472.,  10343628., 10371080., 10417672., 10445184.,
      10491956., 10519528., 10566480., 10594112., 10419708., 10447400.,
      10494232., 10521984., 10568996., 10596808., 10644000., 10671872.,
      8029808.,  8051552.,  8088416.,  8110208.,  8147216.,  8169056.,
      8206208.,  8228096.,  8089904.,  8111840.,  8148896.,  8170880.,
      8208080.,  8230112.,  8267456.,  8289536.,  9413708.,  9440136.,
      9484744.,  9511232.,  9556020.,  9582568.,  9627536.,  9654144.,
      11638595., 11671630., 11727090., 11760200., 11815885., 11849070.,
      11904980., 11938240., 11727695., 11761030., 11816790., 11850200.,
      11906185., 11939670., 11995880., 12029440., 9272604.,  9299272.,
      9343640.,  9370368.,  9414916.,  9441704.,  9486432.,  9513280.,
      9342924.,  9369832.,  9414440.,  9441408.,  9486196.,  9513224.,
      9558192.,  9585280.,  9610796.,  9638600.,  9684584.,  9712448.,
      9758612.,  9786536.,  9832880.,  9860864.,  11487163., 11521150.,
      11577562., 11611624., 11668261., 11702398., 11759260., 11793472.,
      11576263., 11610550., 11667262., 11701624., 11758561., 11792998.,
      11850160., 11884672., 8949756.,  8976776.,  9021496.,  9048576.,
      9093476.,  9120616.,  9165696.,  9192896.,  9020076.,  9047336.,
      9092296.,  9119616.,  9164756.,  9192136.,  9237456.,  9264896.,
      6809904.,  6831328.,  6866336.,  6887808.,  6922960.,  6944480.,
      6979776.,  7001344.,  8408140.,  8434920.,  8478440.,  8505280.,
      8548980.,  8575880.,  8619760.,  8646720.,  8474620.,  8501640.,
      8545400.,  8572480.,  8616420.,  8643560.,  8687680.,  8714880.,
      6690928.,  6712544.,  6747360.,  6769024.,  6803984.,  6825696.,
      6860800.,  6882560.,  6743344.,  6765152.,  6800160.,  6822016.,
      6857168.,  6879072.,  6914368.,  6936320.,  6865072.,  6887392.,
      6923296.,  6945664.,  6981712.,  7004128.,  7040320.,  7062784.,
      8112428.,  8139560.,  8183432.,  8210624.,  8254676.,  8281928.,
      8326160.,  8353472.,  8178908.,  8206280.,  8250392.,  8277824.,
      8322116.,  8349608.,  8394080.,  8421632.,  6270960.,  6292448.,
      6327136.,  6348672.,  6383504.,  6405088.,  6440064.,  6461696.,
      6323376.,  6345056.,  6379936.,  6401664.,  6436688.,  6458464.,
      6493632.,  6515456.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 1024.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1940427., 1953630., 1969722., 1982952., 1999125., 2012382., 2028636.,
      2041920., 1951767., 1965078., 1981278., 1994616., 2010897., 2024262.,
      2040624., 2054016., 1963107., 1976526., 1992834., 2006280., 2022669.,
      2036142., 2052612., 2066112., 1974447., 1987974., 2004390., 2017944.,
      2034441., 2048022., 2064600., 2078208., 1985787., 1999422., 2015946.,
      2029608., 2046213., 2059902., 2076588., 2090304., 2053827., 2068110.,
      2085282., 2099592., 2116845., 2131182., 2148516., 2162880., 2065167.,
      2079558., 2096838., 2111256., 2128617., 2143062., 2160504., 2174976.,
      2076507., 2091006., 2108394., 2122920., 2140389., 2154942., 2172492.,
      2187072., 2087847., 2102454., 2119950., 2134584., 2152161., 2166822.,
      2184480., 2199168., 2099187., 2113902., 2131506., 2146248., 2163933.,
      2178702., 2196468., 2211264., 2167227., 2182590., 2200842., 2216232.,
      2234565., 2249982., 2268396., 2283840., 2178567., 2194038., 2212398.,
      2227896., 2246337., 2261862., 2280384., 2295936., 2189907., 2205486.,
      2223954., 2239560., 2258109., 2273742., 2292372., 2308032., 2201247.,
      2216934., 2235510., 2251224., 2269881., 2285622., 2304360., 2320128.,
      2212587., 2228382., 2247066., 2262888., 2281653., 2297502., 2316348.,
      2332224., 2280627., 2297070., 2316402., 2332872., 2352285., 2368782.,
      2388276., 2404800., 2291967., 2308518., 2327958., 2344536., 2364057.,
      2380662., 2400264., 2416896., 2303307., 2319966., 2339514., 2356200.,
      2375829., 2392542., 2412252., 2428992., 2314647., 2331414., 2351070.,
      2367864., 2387601., 2404422., 2424240., 2441088., 2325987., 2342862.,
      2362626., 2379528., 2399373., 2416302., 2436228., 2453184., 2394027.,
      2411550., 2431962., 2449512., 2470005., 2487582., 2508156., 2525760.,
      2405367., 2422998., 2443518., 2461176., 2481777., 2499462., 2520144.,
      2537856., 2416707., 2434446., 2455074., 2472840., 2493549., 2511342.,
      2532132., 2549952., 2428047., 2445894., 2466630., 2484504., 2505321.,
      2523222., 2544120., 2562048., 2439387., 2457342., 2478186., 2496168.,
      2517093., 2535102., 2556108., 2574144.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, SAME3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2612272., 2623072., 2633872., 2644672., 2665952., 2676800., 2687648.,
      2698496., 2720016., 2730912., 2741808., 2752704., 2774464., 2785408.,
      2796352., 2807296., 3359836., 3372952., 3386068., 3399184., 3425432.,
      3438608., 3451784., 3464960., 3491508., 3504744., 3517980., 3531216.,
      3558064., 3571360., 3584656., 3597952., 3411404., 3424760., 3438116.,
      3451472., 3477960., 3491376., 3504792., 3518208., 3544996., 3558472.,
      3571948., 3585424., 3612512., 3626048., 3639584., 3653120., 2912240.,
      2922720., 2933200., 2943680., 2964896., 2975424., 2985952., 2996480.,
      3017936., 3028512., 3039088., 3049664., 3071360., 3081984., 3092608.,
      3103232., 2954416., 2965088., 2975760., 2986432., 3007840., 3018560.,
      3029280., 3040000., 3061648., 3072416., 3083184., 3093952., 3115840.,
      3126656., 3137472., 3148288., 4090204., 4104344., 4118484., 4132624.,
      4160536., 4174736., 4188936., 4203136., 4231348., 4245608., 4259868.,
      4274128., 4302640., 4316960., 4331280., 4345600., 5206907., 5224070.,
      5241233., 5258396., 5292686., 5309924., 5327162., 5344400., 5379065.,
      5396378., 5413691., 5431004., 5466044., 5483432., 5500820., 5518208.,
      5274215., 5291678., 5309141., 5326604., 5361194., 5378732., 5396270.,
      5413808., 5448773., 5466386., 5483999., 5501612., 5536952., 5554640.,
      5572328., 5590016., 4406284., 4420152., 4434020., 4447888., 4475592.,
      4489520., 4503448., 4517376., 4545380., 4559368., 4573356., 4587344.,
      4615648., 4629696., 4643744., 4657792., 4460668., 4474776., 4488884.,
      4502992., 4530936., 4545104., 4559272., 4573440., 4601684., 4615912.,
      4630140., 4644368., 4672912., 4687200., 4701488., 4715776., 4350396.,
      4364376., 4378356., 4392336., 4420088., 4434128., 4448168., 4462208.,
      4490260., 4504360., 4518460., 4532560., 4560912., 4575072., 4589232.,
      4603392., 5115059., 5132150., 5149241., 5166332., 5200550., 5217716.,
      5234882., 5252048., 5286641., 5303882., 5321123., 5338364., 5373332.,
      5390648., 5407964., 5425280., 5182367., 5199758., 5217149., 5234540.,
      5269058., 5286524., 5303990., 5321456., 5356349., 5373890., 5391431.,
      5408972., 5444240., 5461856., 5479472., 5497088., 3948140., 3961848.,
      3975556., 3989264., 4016808., 4030576., 4044344., 4058112., 4085956.,
      4099784., 4113612., 4127440., 4155584., 4169472., 4183360., 4197248.,
      4002524., 4016472., 4030420., 4044368., 4072152., 4086160., 4100168.,
      4114176., 4142260., 4156328., 4170396., 4184464., 4212848., 4226976.,
      4241104., 4255232., 3139248., 3150432., 3161616., 3172800., 3194720.,
      3205952., 3217184., 3228416., 3250576., 3261856., 3273136., 3284416.,
      3306816., 3318144., 3329472., 3340800., 3603964., 3617432., 3630900.,
      3644368., 3671288., 3684816., 3698344., 3711872., 3739092., 3752680.,
      3766268., 3779856., 3807376., 3821024., 3834672., 3848320., 3656812.,
      3670520., 3684228., 3697936., 3725096., 3738864., 3752632., 3766400.,
      3793860., 3807688., 3821516., 3835344., 3863104., 3876992., 3890880.,
      3904768., 2827888., 2838752., 2849616., 2860480., 2882336., 2893248.,
      2904160., 2915072., 2937168., 2948128., 2959088., 2970048., 2992384.,
      3003392., 3014400., 3025408., 2871088., 2882144., 2893200., 2904256.,
      2926304., 2937408., 2948512., 2959616., 2981904., 2993056., 3004208.,
      3015360., 3037888., 3049088., 3060288., 3071488., 2436144., 2446688.,
      2457232., 2467776., 2489056., 2499648., 2510240., 2520832., 2542352.,
      2552992., 2563632., 2574272., 2596032., 2606720., 2617408., 2628096.,
      2826844., 2839640., 2852436., 2865232., 2891480., 2904336., 2917192.,
      2930048., 2956596., 2969512., 2982428., 2995344., 3022192., 3035168.,
      3048144., 3061120., 2879692., 2892728., 2905764., 2918800., 2945288.,
      2958384., 2971480., 2984576., 3011364., 3024520., 3037676., 3050832.,
      3077920., 3091136., 3104352., 3117568., 2200560., 2210784., 2221008.,
      2231232., 2252448., 2262720., 2272992., 2283264., 2304720., 2315040.,
      2325360., 2335680., 2357376., 2367744., 2378112., 2388480., 2243760.,
      2254176., 2264592., 2275008., 2296416., 2306880., 2317344., 2327808.,
      2349456., 2359968., 2370480., 2380992., 2402880., 2413440., 2424000.,
      2434560.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 512.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow5Stride2, VALID3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3867651., 3880854., 3894057., 3907260., 3926214., 3939444., 3952674.,
      3965904., 3984993., 3998250., 4011507., 4024764., 4043988., 4057272.,
      4070556., 4083840., 3890223., 3903534., 3916845., 3930156., 3949218.,
      3962556., 3975894., 3989232., 4008429., 4021794., 4035159., 4048524.,
      4067856., 4081248., 4094640., 4108032., 3912795., 3926214., 3939633.,
      3953052., 3972222., 3985668., 3999114., 4012560., 4031865., 4045338.,
      4058811., 4072284., 4091724., 4105224., 4118724., 4132224., 3935367.,
      3948894., 3962421., 3975948., 3995226., 4008780., 4022334., 4035888.,
      4055301., 4068882., 4082463., 4096044., 4115592., 4129200., 4142808.,
      4156416., 3957939., 3971574., 3985209., 3998844., 4018230., 4031892.,
      4045554., 4059216., 4078737., 4092426., 4106115., 4119804., 4139460.,
      4153176., 4166892., 4180608., 4093371., 4107654., 4121937., 4136220.,
      4156254., 4170564., 4184874., 4199184., 4219353., 4233690., 4248027.,
      4262364., 4282668., 4297032., 4311396., 4325760., 4115943., 4130334.,
      4144725., 4159116., 4179258., 4193676., 4208094., 4222512., 4242789.,
      4257234., 4271679., 4286124., 4306536., 4321008., 4335480., 4349952.,
      4138515., 4153014., 4167513., 4182012., 4202262., 4216788., 4231314.,
      4245840., 4266225., 4280778., 4295331., 4309884., 4330404., 4344984.,
      4359564., 4374144., 4161087., 4175694., 4190301., 4204908., 4225266.,
      4239900., 4254534., 4269168., 4289661., 4304322., 4318983., 4333644.,
      4354272., 4368960., 4383648., 4398336., 4183659., 4198374., 4213089.,
      4227804., 4248270., 4263012., 4277754., 4292496., 4313097., 4327866.,
      4342635., 4357404., 4378140., 4392936., 4407732., 4422528., 4319091.,
      4334454., 4349817., 4365180., 4386294., 4401684., 4417074., 4432464.,
      4453713., 4469130., 4484547., 4499964., 4521348., 4536792., 4552236.,
      4567680., 4341663., 4357134., 4372605., 4388076., 4409298., 4424796.,
      4440294., 4455792., 4477149., 4492674., 4508199., 4523724., 4545216.,
      4560768., 4576320., 4591872., 4364235., 4379814., 4395393., 4410972.,
      4432302., 4447908., 4463514., 4479120., 4500585., 4516218., 4531851.,
      4547484., 4569084., 4584744., 4600404., 4616064., 4386807., 4402494.,
      4418181., 4433868., 4455306., 4471020., 4486734., 4502448., 4524021.,
      4539762., 4555503., 4571244., 4592952., 4608720., 4624488., 4640256.,
      4409379., 4425174., 4440969., 4456764., 4478310., 4494132., 4509954.,
      4525776., 4547457., 4563306., 4579155., 4595004., 4616820., 4632696.,
      4648572., 4664448., 4544811., 4561254., 4577697., 4594140., 4616334.,
      4632804., 4649274., 4665744., 4688073., 4704570., 4721067., 4737564.,
      4760028., 4776552., 4793076., 4809600., 4567383., 4583934., 4600485.,
      4617036., 4639338., 4655916., 4672494., 4689072., 4711509., 4728114.,
      4744719., 4761324., 4783896., 4800528., 4817160., 4833792., 4589955.,
      4606614., 4623273., 4639932., 4662342., 4679028., 4695714., 4712400.,
      4734945., 4751658., 4768371., 4785084., 4807764., 4824504., 4841244.,
      4857984., 4612527., 4629294., 4646061., 4662828., 4685346., 4702140.,
      4718934., 4735728., 4758381., 4775202., 4792023., 4808844., 4831632.,
      4848480., 4865328., 4882176., 4635099., 4651974., 4668849., 4685724.,
      4708350., 4725252., 4742154., 4759056., 4781817., 4798746., 4815675.,
      4832604., 4855500., 4872456., 4889412., 4906368., 4770531., 4788054.,
      4805577., 4823100., 4846374., 4863924., 4881474., 4899024., 4922433.,
      4940010., 4957587., 4975164., 4998708., 5016312., 5033916., 5051520.,
      4793103., 4810734., 4828365., 4845996., 4869378., 4887036., 4904694.,
      4922352., 4945869., 4963554., 4981239., 4998924., 5022576., 5040288.,
      5058000., 5075712., 4815675., 4833414., 4851153., 4868892., 4892382.,
      4910148., 4927914., 4945680., 4969305., 4987098., 5004891., 5022684.,
      5046444., 5064264., 5082084., 5099904., 4838247., 4856094., 4873941.,
      4891788., 4915386., 4933260., 4951134., 4969008., 4992741., 5010642.,
      5028543., 5046444., 5070312., 5088240., 5106168., 5124096., 4860819.,
      4878774., 4896729., 4914684., 4938390., 4956372., 4974354., 4992336.,
      5016177., 5034186., 5052195., 5070204., 5094180., 5112216., 5130252.,
      5148288.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, multiplier, padding,
                                 max_input_val);
}